Почему то отдает одну запись из базы. Подскажите ошибку

12
seosniks
На сайте с 13.08.2007
Offline
389
801

Добрый день.

Есть код

$sql = mysql_query("SELECT    news.*, comment.*  FROM news,comment WHERE news.id=comment.id_post and id_post=1");

if(mysql_num_rows($sql) >0) {
$r = mysql_fetch_array($sql);
var_dump($r);

из news береться id новости и добавляется в comment

дальше открываю новость 1

в ней 2 комментария. расположены в поле id_post =1

проблема в этом оле как раз. Потому как оно отдает номер id_post=1 отдаст первый комент

id_post=2 второй.

что то накосячил сам не пойму что. :rolleyes:

В общем нужно из таблицы comment получить коментарии соответствующие

номеру id из таблицы news

значения полей news.id=comment.id_post

=DEREK=
На сайте с 07.05.2009
Offline
130
#1

Попробуйте так

$sql = mysql_query("SELECT *  FROM news, comment WHERE news.id=comment.id_post AND news.id=1");

Получите новость с айдишником 1 и ее коменты.

Показываю фокусы с Drupal (/ru/forum/526565)
seosniks
На сайте с 13.08.2007
Offline
389
#2
=DEREK=:
Попробуйте так
$sql = mysql_query("SELECT *  FROM news, comment WHERE news.id=comment.id_post AND news.id=1");


Получите новость с айдишником 1 и ее коменты.

у меня там еще категории в запросе.

вот запрос на вывод новости

$sql = mysql_query("SELECT  news.*, razdel.* FROM news, razdel WHERE news.category=razdel.catid and cpu='".$cpu."' LIMIT $start,$per_page");

Я хотел добавить отдельным запросом вывод коментов

коменты

$sql = mysql_query("SELECT *  FROM news, comment WHERE news.id=comment.id_post AND news.id=1");  

знаю что можно объеденить одним запросом, даже наверное нужно так.

Но тогда придеться добавлять оператор AND.

Или можо по другому выбрать?

Извините в SQL я чайник.

=DEREK=
На сайте с 07.05.2009
Offline
130
#3

привели бы структуру тих двух таблиц, и что надо из них получить...

seosniks
На сайте с 13.08.2007
Offline
389
#4
=DEREK=:
привели бы структуру тих двух таблиц, и что надо из них получить...

Кажись понял где мой косяк

цикла то нет

while($r = mysql_fetch_array($sql)) {

=DEREK=
На сайте с 07.05.2009
Offline
130
#5

$sql = "SELECT * FROM news, comment WHERE news.id = ".$id." AND  comment.id_post = news.id";

Должно вывести определенную новость и ее коменты

iNd
На сайте с 20.03.2009
Offline
122
iNd
#6
seosniks:
Кажись понял где мой косяк
цикла то нет

да, в этом проблема

seosniks
На сайте с 13.08.2007
Offline
389
#7
iNd:
да, в этом проблема

Так работает

$sql = mysql_query("SELECT * FROM news, comment WHERE comment.id_post=news.id AND news.id=".$id);

if(mysql_num_rows($sql) >0) {

while($r = mysql_fetch_array($sql)) {

}}

$i это номер новости.

Спасибо всем за помощь. 🍻

M
На сайте с 22.02.2007
Offline
103
#8

Если нужно получить только комментарии для новости $id, то достаточно

"SELECT * FROM comment WHERE comment.id_post=$id"

seosniks
На сайте с 13.08.2007
Offline
389
#9
Maxxi:
Если нужно получить только комментарии для новости $id, то достаточно
"SELECT * FROM comment WHERE comment.id_post=$id"

Можно и так. Я сделал поле скрытое. В не м прописал ID новости

теперь при добавлении комента ему присвается ID новости автоматически.😎

Коля Дубр
На сайте с 02.03.2005
Offline
153
#10
seosniks:
Кажись понял где мой косяк
цикла то нет

Поэтому запросы полезно тестировать в phpMyAdmin или другом подобном интерфейсе, чтоб было ясно, где ошибка - в коде или в запросе. Заодно можно сразу и скорость оценить.

Разрабатываю общую шину (http://habrahabr.ru/company/floxim/blog/268467/) помаленьку. ...а еще у меня есть бложек (http://www.blogovo.ru/).
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий