Два и более циклов mysql_fetch. Помогите разобраться!

Кирилл А.

Новичок
Два и более циклов mysql_fetch. Помогите разобраться!

Уважаемый all!

Пытаюсь разобраться как организовать выдачу двух циклов.

Суть вопроса:
Есть две таблицы. 1)event(поля id, data,status,descr) 2)comment (поля id, userid, eventid,comment).

Делаю выборку:
$result = mysql_query("SELECT *,DATE_FORMAT(data, '%d.%m.%Y') as dates FROM event WHERE status='0' ORDER by data");

и далее выдаю в таблицу:
while ($row = mysql_fetch_array($result))
...
echo <td>$row[dates]</td><td>$row[desc]</td>
...
и так далее.

Есть желание показывать юзеру его комменты к событию (event.id=comments.eventid). Загвозка возникла вот в чем:
1) записи, соотвествующей event.id для данного юзера может не быть (коммент не оставлен).

2) результат второго цикла хотелось бы выдавать в ту же таблицу что и результаты первого.

Помогите разобраться как реализовать. Заранее благодарен.
 

Фанат

oncle terrible
Команда форума
ну, тебе нужен либо LEFT JOIN, либо делай запрос к комментам внутри цикла вывода событий
 

Кирилл А.

Новичок
да, второй цикло внутри первого сработал.

теперь совсем простой вопрос.

там, где нет коммента к событию хочется дописать ссылочку "Добавить коммент".

как это внутри второго цикла прописать? Т.е. что будет в row[comment] второго цикла если самого коммента нет? Как условие if прописать?
 

Krisha

pain in the neck
Кирилл А.
По-моему это очевидно: если нету комментариев, тогда добавляем ссылку...

P.S. И не пиши так: $row[dates], правильно писать либо $row["dates"], либо $row['dates'].
 

Кирилл А.

Новичок
да. только один

-~{}~ 15.01.06 17:22:

это понятно, что если нет коммента то ставим ссылку, я пытаюсь разобраться как описать пустой массив row['comment'] и соотвествующее условие.

-~{}~ 15.01.06 17:28:

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

Krisha

pain in the neck
Кирилл А.
А как ты получаешь вообще массив комментариев ?
Насколько я понял, ты в цикле делаешь запрос и достаешь комменты для каждого пользователя. Если комментов нет, то выборка будет пустая. см. [m]mysql_query[/m]
 

Кирилл А.

Новичок
выборка может быть пустой, ага. но в даном случае нужно разделить вывод из массива, в котором комменты от вывода строки где коммента нет.

Криша, вы о:
if (!$result) {
die('Invalid query: ' . mysql_error());
}
?
 

Фанат

oncle terrible
Команда форума
Кирилл А.
при чём здесь Invalid query?

-~{}~ 15.01.06 17:51:

если комментарий может быть только один, то тогда ОДИН запрос с лефт джойном
 

Krisha

pain in the neck
"вывод из массива, в котором комменты от вывода строки где коммента нет"

переведи, плиз
 

Кирилл А.

Новичок
echo "<td>$row['comment']</td>";
else{echo "<td>Нет коммента, добавить?</td>";}
как то так.

Фанат, благодарю за ответы, помогли. Попробую LEFT JOIN
 

Krisha

pain in the neck
Фанат
Я не говорю про 'Invalid query', я вообще спросил, как Кирилл А. получает комменты.
 

Krisha

pain in the neck
Фанат
Если он делает это отдельным запросом, для каждого пользователя типа: "SELECT * FROM comments WHERE id='user_id'" то что он получает в результуте ? очевидно, что если комментов нету, то получает пустую выборку.

Ссылку на mysql_query я дал потому, что там написано:

Use mysql_num_rows() to find out how many rows were returned for a SELECT statement or mysql_affected_rows() to find out how many rows were affected by a DELETE, INSERT, REPLACE, or UPDATE statement.

Да, согласен, можно было дать просто ссылку на mysql_num_rows.
 
Сверху