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 » Программирование на PHP » Подскажите где ошибка?

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

1. koopakaru - 09 Мая, 2007 - 13:47:46 - перейти к сообщению
Начал недавно учить PHP.
даже уже стал что-то понимать, но при написании простенького скрипта столкнулся с проблемой и не могу понять в чем дело.

Ошибка состоит в выводе данных из базы.
У каждой строки есть свой идентефикатор. Мне нужно, чтобы новые строки (соответственно с более большим идентефикационным номером) показывались сверху.
Вывод выглядит так:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. include "conf.php";
  4. $zapros = mysql_query("SELECT * FROM users");
  5.  
  6. echo "<table>";
  7. $obrabotka = mysql_fetch_array($zapros);
  8.  
  9. for ($i=mysql_num_rows($zapros); $i>=0; $i--)
  10. {
  11. echo "<tr><td>ID</td><td>". $obrabotka["ID"]."</td></tr>";
  12. echo "<tr><td>Name</td><td>". $obrabotka["name"]."</td></tr>";
  13. echo "<tr><td>E-mail</td><td>". $obrabotka["mail"]."</td></tr>";
  14. echo "<tr><td>Сообщение</td><td>". $obrabotka["post"]."</td></tr>";
  15. }
  16.  
  17. echo "</table>";
  18.  
  19. ?>

Понимаю, что ошибка в строке for ($i=mysql_num_rows($zapros); $i>=0; $i--), а в чем не пойму. Скрипт наплевал на мои указания и все равно выводит все наоборот. То есть старые строки сверху, новые снизу. Почему?

Помогите пожалуйста.
2. kamikadze - 09 Мая, 2007 - 14:09:09 - перейти к сообщению
Не >= , а => надо!!!
3. koopakaru - 09 Мая, 2007 - 14:29:52 - перейти к сообщению
Поменял.

Но теперь вообще ошибку выкидывает
Parse error: syntax error, unexpected T_DOUBLE_ARROW, expecting ';' in /home/septima/data/www/u4/moduls /GuestBook/main.php on line 8

8 строка

for ($i=mysql_num_rows($zapros); $i=>0; $i--)

Откуда тут ошибка с точкой запятой - ведь стоят в обоих местах...
4. evgenijj - 09 Мая, 2007 - 14:31:53 - перейти к сообщению
Ну ты здесь наворотил - вообще непонятно, как там у тебя что-то работает. Делаем запрос к БД:
$zapros = mysql_query("SELECT * FROM users");
или так
$zapros = mysql_query("SELECT * FROM users ORDER BY ID DESC");
чтобы выводить данные в обратном порядке

Потом обрабатываем результат с помощью функции mysql_fetch_array(). Каждый вызов этой функции возвращает следующую строку результата запроса. Если результаты закончились - функция возвращает false. СОРТИРОВКУ результата запроса надо делать в самом запросе с помощью ORDER BY.
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. echo "<table>";
  4. while ( $obrabotka = mysql_fetch_array($zapros) )
  5. {
  6.   echo "<tr>";
  7.   echo "<td>". $obrabotka["ID"]."</td>";
  8.   echo "<td>". $obrabotka["name"]."</td>";
  9.   echo "</tr>";
  10. }
  11. echo "</table>";
  12. ?>
  13.  

Есть еще правда, функция mysql_result(), которая позволяет обратиться к конкретной ячейке результата запроса. Она принимает в качестве одного из входных параметров номер строки результата запроса. Вот с помощью этой функции можно пробежать по результату запроса в обратном порядке. Однако использовать эту функцию настоятельно не рекомендуется - она работает гораздо медленнее mysql_fetch_array().
5. koopakaru - 09 Мая, 2007 - 14:51:20 - перейти к сообщению
Спасибо.
Теперь все очень логично и понятно, и работает
6. evgenijj - 09 Мая, 2007 - 14:56:56 - перейти к сообщению
Ну вот и разобрались.
7. koopakaru - 09 Мая, 2007 - 15:10:41 - перейти к сообщению
ТОгда еще вопрос.

Как вставить в базу данных время, когда была занесена новая запись?
Я создал новое поле Date, c типом DATE. Но вот поставить auto_increment база не дала.
Каким образом это сделать?

Я знаю, что в PHP это выводится при помощи date() - но вот как ее вставить в базу, не пойму.
8. evgenijj - 09 Мая, 2007 - 15:14:21 - перейти к сообщению
INSERT INTO users (name, surname, email, puttime) VALUES ( 'Шура', 'Балаганов', 'mail@mail.ru', NOW() );

http://www[dot]mysql[dot]ru/docs/man/Dat[dot][dot][dot]e_functions[dot]html
9. koopakaru - 10 Мая, 2007 - 00:36:32 - перейти к сообщению
Спасибо. Очень полезная ссылка...

 

Powered by ExBB FM 1.0 RC1