Вывод из массива row в другой массив

mr_dima

Новичок
Вывод из массива row в другой массив

Вообщем пишу функцию - вывод контента.
Если наступают определенные условия, то заполняем массив
PHP:
$output[]
.
Например: формируется запрос для вывода комментарий из таблицы comments,
PHP:
$query = 'SELECT * FROM comments WHERE id = '.$idstat ;
$res = mysql_query($query) or die(mysql_error()); 
$row3=mysql_fetch_array($res);
Если массив $row3 заполняется, выводим таблицу с комментариями:
PHP:
if($row3) {
                $output[]= '<table> <tr><td><h5 >Комментарии</h5> <hr size=1>';
                  while ($row3=mysql_fetch_array($res)) {$output[]='Оставил <b>'.$row3['name'].'.</b><br>'.$row3['text'].'<br> </td>';} 
		$output[]=' </tr></table>';  
		}
Проблема вся в том, что конструкция
PHP:
while ($row3=mysql_fetch_array($res))
не работает, выводится только 1 из комментариев, а если их много?
 

Фанат

oncle terrible
Команда форума
проблема в том, что ты не понимаешь смысл кода, который пишешь
и делаешь очень смешные неправильные выводы.

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

mr_dima

Новичок
Автор оригинала: Slavicos
а сейчас у тебя два коментария?
Блин добавил 3-тий, теперь два отображаются

-~{}~ 09.11.08 23:05:

Автор оригинала: *****


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

Фанат

oncle terrible
Команда форума
Знаешь, дима, от чего это происходит?
Оттого, что ты не понимаешь, что какой код делает.

к примеру, ты полагаешь, будто волшебное заклинание
while ($row3=mysql_fetch_array($res))
выводит все сообщения из базы. где его не положи - все равно будет выводить все сообщения.

А это, как бы, не так. это составная конструкця. их двух операторов - while и mysql_fetch_array
каждый из них работает по своим законам. которые желательно понять.
 

mr_dima

Новичок
Автор оригинала: *****
к примеру, ты полагаешь, будто волшебное заклинание
while ($row3=mysql_fetch_array($res))
выводит все сообщения из базы. где его не положи - все равно будет выводить все сообщения.

То есть, его нельзя ложить в условие, я правильно понял?
 

Фанат

oncle terrible
Команда форума
Примерно.
Проверить, вернула ли что-то база, можно функцией mysql_num_rows

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

pilot911

Новичок
Фан*т витиевато говорит, как всегда. Но намекает вот на эти строчки

$row3=mysql_fetch_array($res);

if($row3) {
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Внимание, вопрос.

Что такое у тебя id

-~{}~ 10.11.08 11:07:

echo $num
?

как выводишь $output
?

-~{}~ 10.11.08 11:08:

Сурс смотрел?
Ничего при выводе таблицы не смущает?
 

mr_dima

Новичок
Кто удалил мой пост, где я писал, что id-это у меня ид статьи, а не комментария?

-~{}~ 10.11.08 00:17:

Автор оригинала: Mr_Max


echo $num ->3


как выводишь $output
return join('',$output);

-~{}~ 10.11.08 11:08:
-~{}~ 10.11.08 00:27:

*****, расскажи почему все, кроме первого
 

mr_dima

Новичок
Спасибо Фан*т, вопрос решил вот что получилось
PHP:
$query = 'SELECT * FROM comments WHERE id = '.$idstat ; 
$res = mysql_query($query) or die(mysql_error()); 
$num=mysql_num_rows($res);
if ($num) 	     
     {
             $output[]= '<table ><tr><td></td></tr></table> 
            <table width="95%" border="0" cellspacing="0" cellpadding="0">
             <tr bgcolor="#E8E8E8"><td width="20"><img src="../img/ugol.gif" width="20" height="16"></td><td></td></tr>
              <tr bgcolor="#E8E8E8"><td ></td><td style="padding:5px;"><h5 >Комментарии</h5> <hr size=1></td>';
            while ($row3=mysql_fetch_array($res) ) {
                                                      $output[]='<tr bgcolor="#E8E8E8"><td></td><td>Оставил <b>'.$row3['name'].'.</b><br>'.$row3['text'].'<br> </td></tr>';
                                                      } 
		      $output[]='</table>';  
			}
 

Фанат

oncle terrible
Команда форума
Молодец.
Теперь осталось сделать шаблон нормальный вместо массива $output.
 
Сверху