как выбрать из 2х таблиц данные

Статус
В этой теме нельзя размещать новые ответы.

асс

Мой дом здесь!
Регистрация
13 Окт 2006
Сообщения
762
Реакции
230
есть таблица news имеет поля id, title, catid
id= индетификатору новости
title=названию новости
catid= номеру категории из таблицы category

есть таблица category имеет поля catid cat_title
вот полностью таблица категорий
HTML:
            catid    title_cat	     
            1	политика	 
            2	новости	news
            3	интернет	 
           12	Сегодня
Задача выбрать новости из конкретной категории


пробую так
PHP:
$Q1 = mysql_query("SELECT * FROM news,category WHERE   category.catid=1  ORDER BY news.id DESC LIMIT $start,$per_page");

В общем как только не пробовал если указываю не существующую категорию то новостей нет,как и положено.

Если указываю категорию которая есть например Интернет
выводяться новости из всех категорий.

Перерыл форумы но так и не нашел информации.

Если не трудно подскажите где ошибка. как выбрать данные из конкретной категории.

Сделал так, работает.
$Q1 = mysql_query("SELECT * FROM news,category WHERE news.catid=category.catid and category.catid=12 LIMIT $start,$per_page");

В общем как выбрать новости я разобрался но проблемма в том что на морде выводятся новости только из указаной категории

А вот как их выбрать все если категория не указана явно?

вот запрос который выводит новости из категории 1
$Q1 = mysql_query("SELECT * FROM news,category WHERE news.catid=category.catid and category.catid='1' LIMIT $start,$per_page");


Я пробовал убрать из выражения WHERE все условие и втсавить только id
Но тут другая проблемма, если новостей всего одна то она повториться 20 раз из за Пейджера
та как пейджер разбивает страницу по 20 новостей и имеет LIMIT $start,$per_page")
где $per_page = 15; // Кол-во записей на страницу
 
Не совсем понял что там у вас за пейджер но думаю вам придется переделывать его!

Вот запрос который выведет все новости:

PHP:
$result = mysql_query("SELECT * FROM news,$db");
$myrow = mysql_fetch_array ($result);

Потом думаю нужно избавиться от вашего пейджера и начать выводить все с помощью цикла:

PHP:
do{
echo  $myrow["title"];
echo  $myrow["news"]; (тут не понятно ваша таблица, что, не имеет поля с текстом новости ?)

}
 while ($myrow = mysql_fetch_array ($result);); # Условие для выполнения цикла (Пока в массиве $result есть новости выводим их)
 
Не совсем понял что там у вас за пейджер но думаю вам придется переделывать его!

Вот запрос который выведет все новости:

PHP:
$result = mysql_query("SELECT * FROM news,$db");
$myrow = mysql_fetch_array ($result);

Потом думаю нужно избавиться от вашего пейджера и начать выводить все с помощью цикла:

PHP:
do{
echo  $myrow["title"];
echo  $myrow["news"]; (тут не понятно ваша таблица, что, не имеет поля с текстом новости ?)

}
 while ($myrow = mysql_fetch_array ($result);); # Условие для выполнения цикла (Пока в массиве $result есть новости выводим их)

имеет новости но я не стал ее кидать чтоб проще было.

вот точно такой пагинатор

Сейчас проверил,оказываеться тут проблемма в дргуом
ВОт такой запрос выдает ошибку
$Q1 = mysql_query("SELECT * FROM news,category WHERE id LIMIT $start,$per_page");

такйо запрос не выдает ошибку

$Q1 = mysql_query("SELECT * FROM news WHERE id LIMIT $start,$per_page");

но из него удален запрос category на выборку из таблицы категории
FROM news,category


ВОт причина в нем. Потому как скорее всего запрос $Q1 = mysql_query("SELECT * FROM news,category WHERE id and news.catid=category.catid and category.catid='".$cat."' LIMIT $start,$per_page");

сотавлен не верно.

Мне надо выводить все новости если урл имеет вид site.ru.

А если урл имеет вид site.ru/?catid=1 то выводить только из категории 1
 
Тогда сделайте так:

PHP:
if(isset ($_GET['catid']))  // Если переменная "catid" существует тогда выводим из базы уроки. где категория равна "catid"
                                        
                                                                       
$Q1 = mysql_query("SELECT * FROM news WHERE id = '$_GET["catid"]'");
}

else                                         // если "catid" нет, тогда выводим все уроки
 { 
$Q1 = mysql_query("SELECT * FROM news ");
}
 
Сделал так
PHP:
if($_GET['id']=='') {
 $cat =$_GET['catid'];
if($cat!=''){

  $Q1 = mysql_query("SELECT * FROM  news,category WHERE  id  and news.catid=category.catid and category.catid='".$cat."' LIMIT $start,$per_page");
 }else{
 $Q1 = mysql_query("SELECT * FROM   news  WHERE    id     LIMIT $start,$per_page");
 }

Все работает правильно . Хотя конструкция очень большая.
теперь если if($cat!='') пустой значит выводим все новости которые идут после else.
А если он содержит значение то выводим
все что до else

Acidrayne У вас тоже самое только у вас проверяеться переменная catid ,если не ошибаюсь. У меня значение переменной catid
 
Acidrayne У вас тоже самое только у вас проверяеться переменная catid ,если не ошибаюсь. У меня значение переменной catid

Все правильно я просто писал исходя их вашей просьбы, если переменная существуюет - выводим все новости где переменная равнакатегории, а если переменной нету тогда выводим все новости! Вообщем можно и так и так просто я думаю что мой код будет более правильным! Если брать ваш од тогда делайте так:

PHP:
if (isset($_GET['catid'])){$catid = $_GET['catid']; if($catid == ''){unset($catid); }} // если переменная "catid" равна 0 - тогда уничтожаем ее
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху