Help. Повтор первой ячейки массива при цикле.

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

Beckie

Новичок
Help. Повтор первой ячейки массива при цикле.

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

Почему такое может происходить?

Все делал, как обычно...

Возможно что-то в базе?





$test = mysql_query("SELECT * FROM comments WHERE post='$id'",$db);

if (mysql_num_rows($test) > 0) {

$mass = mysql_fetch_array($test);

do {
printf("
<p>%s</p><p>%s</p>
<p>%s</p>
<br />
",$mass["author"],
$mass["date"],
$mass["text"]);
}
while (mysql_fetch_array($test));
}
 

Фанат

oncle terrible
Команда форума
тоже по видеоурокам пхп учил? и ничего не понял.

что делает строчка while (mysql_fetch_array($test));?
 

Beckie

Новичок
Еще проблема с кодировкой.

Как сделать так, чтобы в базу поступал текст в нужной кодировке?

Как его выводить я уже выяснил...
 

Фанат

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

Beckie

Новичок
1) Через url прилетает id
2) пихаю id в запрос базы на вытаскивание тех строк, в которой колонка post ровна значению id
3) пихаю это в массив
4) делаю цикл вывода из массива, пока массив не останется пустым

В данном случае цикл почему-то выводит первую запись из массива, при том выводит столько раз, сколько он нашел совпадений id в колонке post.

Где я ошибся?
 

Фанат

oncle terrible
Команда форума
перед тем, как ты написал дополнение к своему вопросу, я успел уже ответить.
ты, наверное, не заметил? прочти еще раз.

-~{}~ 05.04.09 23:52:

здесь:
3) пихаю это в массив
судя по всему, в документации ты описание ни одной из используемых функций не читал.
строка $mass = mysql_fetch_array($test); пихает далеко не "все это" в массив.

а что делает строка while (mysql_fetch_array($test)); непонятно даже в контексте этой ошибки. выглядит как "волшебное заклинание, которое прокручивает массив в цикле. любой массив в любом цикле"
 

Фанат

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

Beckie

Новичок
Ну хоть поставьте меня на путь истинный о великие боги php. :)

-~{}~ 06.04.09 00:17:

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

Ладно, пошел Доктора Хауса смотреть.

Спасибо за ответы. Ценю ваш форум.
Завтра буду зачитываться на работе.
 

pilot911

Новичок
самый главный момент - это цикл

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

обрати внимание на эти 3 пункта и разберись, что они делают


1. $mass = mysql_fetch_array($test);

2
PHP:
do {
printf("
<p>%s</p><p>%s</p>
<p>%s</p>
<br />
",$mass["author"],
$mass["date"],
$mass["text"]);
}
3 while (mysql_fetch_array($test));
 

Фанат

oncle terrible
Команда форума
для начала просто прочитай в документации описание функций, начинающихся с mysql_
чтобы понять, что они делают.

сделать это несложно, просто набираеь в браузере, к примеру, http://php.net/mysql_fetch_array и читаешь.

-~{}~ 06.04.09 00:22:

Завтра буду зачитываться на работе.
ок

-~{}~ 06.04.09 00:24:

Почему у меня такое чувство, что кто-то встал
все дело вот в этом:
Все делал, как обычно...
Возможно что-то в базе?
У Жванецкого монолог есть, про консерваторию. Там твоя реплика один-в-один. Все смеются.
 

Gorynych

Посетитель PHP-Клуба
перефразирую *****а: строчка while (mysql_fetch_array($test)); просто пробегает выборку, никуда не возвращая "отфетченные" данные, а в цикле печатаются данные из $mass, занесенные туда первым обращением за результатами. Потому весь цикл и выводит первую строку из выборки
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху