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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Подскажите где ошибка?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: начинающий пишет простенький скрипт
koopakaru
Отправлено: 09 Мая, 2007 - 13:47:46
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Май 2007  


Помог: 0 раз(а)




Начал недавно учить 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--), а в чем не пойму. Скрипт наплевал на мои указания и все равно выводит все наоборот. То есть старые строки сверху, новые снизу. Почему?

Помогите пожалуйста.
 
 Top
kamikadze
Отправлено: 09 Мая, 2007 - 14:09:09
Post Id



Склонен к самоубийству


Покинул форум
Сообщений всего: 391
Дата рег-ции: Янв. 2007  


Помог: 0 раз(а)




Не >= , а => надо!!!
 
 Top
koopakaru
Отправлено: 09 Мая, 2007 - 14:29:52
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Май 2007  


Помог: 0 раз(а)




Поменял.

Но теперь вообще ошибку выкидывает
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--)

Откуда тут ошибка с точкой запятой - ведь стоят в обоих местах...
 
 Top
evgenijj
Отправлено: 09 Мая, 2007 - 14:31:53
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Ну ты здесь наворотил - вообще непонятно, как там у тебя что-то работает. Делаем запрос к БД:
$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().
 
 Top
koopakaru
Отправлено: 09 Мая, 2007 - 14:51:20
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Май 2007  


Помог: 0 раз(а)




Спасибо.
Теперь все очень логично и понятно, и работает
 
 Top
evgenijj
Отправлено: 09 Мая, 2007 - 14:56:56
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Ну вот и разобрались.
 
 Top
koopakaru
Отправлено: 09 Мая, 2007 - 15:10:41
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Май 2007  


Помог: 0 раз(а)




ТОгда еще вопрос.

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

Я знаю, что в PHP это выводится при помощи date() - но вот как ее вставить в базу, не пойму.
 
 Top
evgenijj
Отправлено: 09 Мая, 2007 - 15:14:21
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




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
 
 Top
koopakaru
Отправлено: 10 Мая, 2007 - 00:36:32
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Май 2007  


Помог: 0 раз(а)




Спасибо. Очень полезная ссылка...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB