Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Не работает скрипт
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Не работает скрипт

Страниц (1): [1]
 

1. LORDIF - 14 Декабря, 2010 - 15:10:42 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $res = mysql_query("SELECT title,id FROM books",$db);
  3. $i = 1;
  4. while($row = mysql_fetch_array($res) && $i <= 10)
  5. {
  6. printf('<tr>
  7. <td class="table_left"><a href="view.php?id=%s">%s</a></td>
  8. <td class="table_right"><b>'.($i < 10 ? '0':'').''.$i.'</b></td>
  9. </tr>',$row["id"],$row["title"]);
  10. $i++;
  11. }
  12. ?>

Маркеры не выводятся, можете плз сказать в чем ошибка, хотя видно, что инфа из базы выводится, так как в базе 3 заметки и выводится токо 3 поля, вместо 10.
2. CenapaTop - 14 Декабря, 2010 - 15:16:03 - перейти к сообщению
3 заметки
mysql_fetch_array() возвращает FALSE
цикл while завершается
3. LORDIF - 14 Декабря, 2010 - 15:29:56 - перейти к сообщению
CenapaTop пишет:
mysql_fetch_array() возвращает FALSE

Почему он возвращает FALSE?
4. CenapaTop - 14 Декабря, 2010 - 15:33:52 - перейти к сообщению
LORDIF пишет:
так как в базе 3 заметки
5. LORDIF - 14 Декабря, 2010 - 15:35:35 - перейти к сообщению
Я сделал 100 и ничего не меняется, просто выводится нумерование до 10
Маркеры не работают.
(Добавление)
Сделал проверку
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if($res == TRUE) {echo "Yes";}
  3. else {echo "No!";}
  4. if($row = mysql_fetch_array($res) == TRUE) {echo "Yes";}
  5. else {echo "No!";}?>

Все работает!
(Добавление)
Вот что сделал:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. $res = mysql_query("SELECT title,id FROM books",$db);
  3. $i = 1;
  4. while($row = mysql_fetch_array($res) && $i <= 10)
  5. {
  6. echo '<tr>
  7. <td class="table_left"><a href="view_book.php?id=s">'.var_dump($row["title"]).'</a></td>
  8. <td class="table_right"><b>'.($i < 10 ? '0':'').''.$i.'</b></td>
  9. </tr>';
  10. $i++;
  11. }
  12. ?>

Вар дамп показал все значения NULL, но они все имеют значения, почему?
6. Мелкий - 14 Декабря, 2010 - 16:06:02 - перейти к сообщению
LORDIF пишет:
Вар дамп показал все значения NULL, но они все имеют значения, почему?

var_dump выводит текст сам. И абсолютно ничего не возвращает, т.е. void. А конкатенация с ничем (void) и даёт NULL в строку.
7. LORDIF - 14 Декабря, 2010 - 16:14:55 - перейти к сообщению
Тогда я совсем не понимаю почему не работает скрипт
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $res = mysql_query("SELECT title,id FROM books",$db);
  3. $i = 1;
  4. while($row = mysql_fetch_array($res) && $i <= 10)
  5. {
  6. printf('<tr>
  7. <td class="table_left"><a href="view.php?id=%s">%s</a></td>
  8. <td class="table_right"><b>'.($i < 10 ? '0':'').''.$i.'</b></td>
  9. </tr>',$row["id"],$row["title"]);
  10. $i++;
  11. }
  12. ?>
8. Мелкий - 14 Декабря, 2010 - 16:25:21 - перейти к сообщению
"не работает" - плохое описание. В чём это проявляется,

сколько пишет
9. LORDIF - 14 Декабря, 2010 - 16:27:34 - перейти к сообщению
Столько сколько в базе ячеек: 30
10. OrmaJever - 14 Декабря, 2010 - 16:38:08 - перейти к сообщению
зачем это условие $i <= 10 ?
Непроще поставить в цыкле
11. LORDIF - 14 Декабря, 2010 - 18:39:39 - перейти к сообщению
Хм, поставил как вы посоветовали через if и все заработало, правда я так и не понял ошибку(
Правда в моем случае мне нужно выводить 10 значений, так что мне нужно было

А так огромное спасибо за подсказку.

 

Powered by ExBB FM 1.0 RC1