Форумы портала PHP.SU » Разное » Обсуждение статей » Постраничная новигация

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

1. Ejik - 16 Октября, 2007 - 09:04:18 - перейти к сообщению
Здравствуйте, я наткнулся на статью "Постраничная навигация на PHP", как раз то что я искал, но вот проблема скрипт не работает, выкидывает в браузер такую ошибку:
Fatal error: Unsupported operand types in z:homecap.kzwwwnews.php on line 40
в скрипте под стракой 40 идет вот эта запись:
$total = intval(($posts - 1) / $num) + 1;
Помогите разобраться в чем проблема, я ПХП только изучаю и с подобной ошибкой не сталкивался.
Заранее спасибо.
2. EuGen - 16 Октября, 2007 - 09:13:53 - перейти к сообщению
Это значит, что типы операндов не соответствуют операции. Так, например, нельзя одну строку поделить на другую или же сложить массив с числом.
И еще: приведите, пожалуйста, ссылку на статью, или часть кода, а то так совсем ничего не понятно.
3. Ejik - 16 Октября, 2007 - 09:33:38 - перейти к сообщению
4. EuGen - 16 Октября, 2007 - 11:10:56 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. // Устанавливаем соединение с базой данных
  4. include "config.php";
  5. // Переменная хранит число сообщений выводимых на станице
  6. $num = 25;
  7. // Извлекаем из URL текущую страницу
  8. $page = $_GET['page'];
  9. // Определяем общее число сообщений в базе данных
  10. $result = mysql_query("SELECT COUNT(*) FROM post");
  11. $posts = mysql_fetch_row($result);
  12. // Находим общее число страниц
  13. $total = intval(($posts - 1) / $num) + 1;
  14. // Определяем начало сообщений для текущей страницы
  15. $page = intval($page);
  16. // Если значение $page меньше единицы или отрицательно
  17. // переходим на первую страницу
  18. // А если слишком большое, то переходим на последнюю
  19. if(empty($page) or $page < 0) $page = 1;
  20.   if($page > $total) $page = $total;
  21. // Вычисляем начиная к какого номера
  22. // следует выводить сообщения
  23. $start = $page * $num - $num;
  24. // Выбираем $num сообщений начиная с номера $start
  25. $result = mysql_query("SELECT * FROM post LIMIT $start, $num");
  26. // В цикле переносим результаты запроса в массив $postrow
  27. while ( $postrow[] = mysql_fetch_array($result))
  28. ?>
  29.  

К администраторам портала:
При помощи mysql_fetch_row узнавать число строк - плохая идея.
Очевидно - что при попытке разделить массив на число - будет ошибка.
5. Ejik - 16 Октября, 2007 - 11:14:31 - перейти к сообщению
EuGen
А что именно нужно исправить?
6. EuGen - 16 Октября, 2007 - 11:25:52 - перейти к сообщению
Сделайте так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  // Устанавливаем соединение с базой данных
  4.  include "config.php";
  5.  // Переменная хранит число сообщений выводимых на станице
  6.  $num = 25;
  7.  // Извлекаем из URL текущую страницу
  8.  $page = $_GET['page'];
  9.  // Определяем общее число сообщений в базе данных
  10.  $result = mysql_query("SELECT COUNT(*) FROM post");
  11.  $rgPosts = mysql_fetch_rows($result);
  12.  $posts=$rgPosts[0];
  13.  // Находим общее число страниц
  14.  $total = intval(($posts - 1) / $num) + 1;
  15.  // Определяем начало сообщений для текущей страницы
  16.  $page = intval($page);
  17.  // Если значение $page меньше единицы или отрицательно
  18.  // переходим на первую страницу
  19.  // А если слишком большое, то переходим на последнюю
  20.  if(empty($page) or $page < 0) $page = 1;
  21.    if($page > $total) $page = $total;
  22.  // Вычисляем начиная к какого номера
  23.  // следует выводить сообщения
  24.  $start = $page * $num - $num;
  25.  // Выбираем $num сообщений начиная с номера $start
  26.  $result = mysql_query("SELECT * FROM post LIMIT $start, $num");
  27.  // В цикле переносим результаты запроса в массив $postrow
  28.  while ( $postrow[] = mysql_fetch_array($result))
  29.  ?>  
  30.  
7. valenok - 16 Октября, 2007 - 12:37:47 - перейти к сообщению
http://php.su/forum/topic.php?fo...m=33&topic=4
8. Ejik - 16 Октября, 2007 - 13:11:09 - перейти к сообщению
EuGen
Спасибо, одной проблемой меньше.
Ошибки нет, но есть другое, теперь вместо того чтобы вывести $num записей, у меня эта переменная равна 5, скрипт вываливает все записи и плюс ещё какие-то пустые строчки выводит, и при переходе на другую страницу не чего не меняется.
Странно, может ещё и цикл не правильно работает?
9. EuGen - 16 Октября, 2007 - 13:17:17 - перейти к сообщению
Прошу прощения, я опечатался в строке:
PHP:
скопировать код в буфер обмена
  1.  
  2. $rgPosts = mysql_fetch_rows($result);
  3.  

Там, конечно, же, нужно вписать:
PHP:
скопировать код в буфер обмена
  1.  
  2. $rgPosts = mysql_fetch_row($result);
  3.  
10. Ejik - 16 Октября, 2007 - 13:37:36 - перейти к сообщению
EuGen
Опечатку я заметал.
Хотелось бы узнать, кто-нибудь этот скрипт проверял на работоспособность? или эта я токай темный Улыбка.
11. EuGen - 16 Октября, 2007 - 13:41:29 - перейти к сообщению
Я - не проверял, хотя по коду посмотрел, что вроде бы все логично. Надо будет кстати проверить и в самом деле.
12. valenok - 16 Октября, 2007 - 14:49:27 - перейти к сообщению
Тогда надо вон сколько всего у нас на сайте проверить, ужаснуться и забыть, потому что много чего мы потом и не сделаем.
Всё равно сначало скачают а потом пойдут на форум спрашивать почему вот так вот ..
13. EuGen - 16 Октября, 2007 - 15:20:33 - перейти к сообщению
Вот уж не знал, что можно выкладывать на всеобщее обозрение неработающий код...
Я то был уверен в том, что если что-то выкладывается, то это "что-то" надлежащим образом тестируется, или же (если тесты не прошло, или нет времени на тестирование), не выкладывается вообще!
К администраторам портала: это же "лицо" сайта, именно из этого складывается мнение пользователей о полезности данного ресурса. Это хорошо, что тут есть такие, как valenok - они объяснят юзерам что и где "не так", но это же до поры до времени так может быть.. рано или поздно все равно будет задан вопрос, а на него вовремя не ответят или ответят не так, как хочется юзеру. Я бы относился к таким вещам построже...
14. evgenijj - 16 Октября, 2007 - 19:28:51 - перейти к сообщению
EuGen пишет:

К администраторам портала: это же "лицо" сайта, именно из этого складывается мнение пользователей о полезности данного ресурса. Это хорошо, что тут есть такие, как valenok - они объяснят юзерам что и где "не так", но это же до поры до времени так может быть.. рано или поздно все равно будет задан вопрос, а на него вовремя не ответят или ответят не так, как хочется юзеру. Я бы относился к таким вещам построже...


Для начала надо найти этого самого администратора -- он уже около года на сайте не показывается.

ARTY (автор портала http://php.su) собрал множество статей в Интернете, посвященных PHP, и просто их опубликовал. Все опубликованные статьи, думаю, он не читал. И работоспособность скриптов не проверял.

Ошибка в скрипте есть -- я сам в свое время вносил в этот скрипт исправления, когда мне понадобилась постраничная навигация.

Постоянно сталкиваюсь с этой ситуацией -- скрипты, скачанные в Интернет, содержат ошибки. Как с этим бороться -- дело темное. Даже если написать автору скрипта (в нанном случае -- Кузнецову, Симдянову и пр.) и они исправят в нем ошибку -- как ее исправить во всех копиях?
15. EuGen - 16 Октября, 2007 - 22:22:45 - перейти к сообщению
evgenijj - зачем впустую тратить время, чтобы отписать авторам. Можно, я думаю, просто исправить (или, если нет времени, то не публиковать), и написать что то наподобие "Администрация портала дополнила эту статью..."
evgenijj - я понимаю, что администратора тут уже давно не видно, да и я не в претензии ни в коем случае ни к Вам ни к нему, всё-таки много и много раз мне этот портал уже помог сильно, и вот поэтому то мне и хочется, чтобы портал был еще лучше.

 

Powered by ExBB FM 1.0 RC1