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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Ejik
Отправлено: 16 Октября, 2007 - 09:04:18
Post Id


Гость


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


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




Здравствуйте, я наткнулся на статью "Постраничная навигация на PHP", как раз то что я искал, но вот проблема скрипт не работает, выкидывает в браузер такую ошибку:
Fatal error: Unsupported operand types in z:homecap.kzwwwnews.php on line 40
в скрипте под стракой 40 идет вот эта запись:
$total = intval(($posts - 1) / $num) + 1;
Помогите разобраться в чем проблема, я ПХП только изучаю и с подобной ошибкой не сталкивался.
Заранее спасибо.
 
 Top
EuGen Администратор
Отправлено: 16 Октября, 2007 - 09:13:53
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Это значит, что типы операндов не соответствуют операции. Так, например, нельзя одну строку поделить на другую или же сложить массив с числом.
И еще: приведите, пожалуйста, ссылку на статью, или часть кода, а то так совсем ничего не понятно.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Ejik
Отправлено: 16 Октября, 2007 - 09:33:38
Post Id


Гость


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


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




 
 Top
EuGen Администратор
Отправлено: 16 Октября, 2007 - 11:10:56
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




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 узнавать число строк - плохая идея.
Очевидно - что при попытке разделить массив на число - будет ошибка.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Ejik
Отправлено: 16 Октября, 2007 - 11:14:31
Post Id


Гость


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


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




EuGen
А что именно нужно исправить?
 
 Top
EuGen Администратор
Отправлено: 16 Октября, 2007 - 11:25:52
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Сделайте так:
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.  


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
valenok
Отправлено: 16 Октября, 2007 - 12:37:47
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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






-----
Truly yours, Sasha.
 
My status
 Top
Ejik
Отправлено: 16 Октября, 2007 - 13:11:09
Post Id


Гость


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


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




EuGen
Спасибо, одной проблемой меньше.
Ошибки нет, но есть другое, теперь вместо того чтобы вывести $num записей, у меня эта переменная равна 5, скрипт вываливает все записи и плюс ещё какие-то пустые строчки выводит, и при переходе на другую страницу не чего не меняется.
Странно, может ещё и цикл не правильно работает?
 
 Top
EuGen Администратор
Отправлено: 16 Октября, 2007 - 13:17:17
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Прошу прощения, я опечатался в строке:
PHP:
скопировать код в буфер обмена
  1.  
  2. $rgPosts = mysql_fetch_rows($result);
  3.  

Там, конечно, же, нужно вписать:


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Ejik
Отправлено: 16 Октября, 2007 - 13:37:36
Post Id


Гость


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


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




EuGen
Опечатку я заметал.
Хотелось бы узнать, кто-нибудь этот скрипт проверял на работоспособность? или эта я токай темный Улыбка.
 
 Top
EuGen Администратор
Отправлено: 16 Октября, 2007 - 13:41:29
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Я - не проверял, хотя по коду посмотрел, что вроде бы все логично. Надо будет кстати проверить и в самом деле.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
valenok
Отправлено: 16 Октября, 2007 - 14:49:27
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




Тогда надо вон сколько всего у нас на сайте проверить, ужаснуться и забыть, потому что много чего мы потом и не сделаем.
Всё равно сначало скачают а потом пойдут на форум спрашивать почему вот так вот ..


-----
Truly yours, Sasha.
 
My status
 Top
EuGen Администратор
Отправлено: 16 Октября, 2007 - 15:20:33
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




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


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
evgenijj
Отправлено: 16 Октября, 2007 - 19:28:51
Post Id



Участник


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


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




EuGen пишет:

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


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

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

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

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


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




evgenijj - зачем впустую тратить время, чтобы отписать авторам. Можно, я думаю, просто исправить (или, если нет времени, то не публиковать), и написать что то наподобие "Администрация портала дополнила эту статью..."
evgenijj - я понимаю, что администратора тут уже давно не видно, да и я не в претензии ни в коем случае ни к Вам ни к нему, всё-таки много и много раз мне этот портал уже помог сильно, и вот поэтому то мне и хочется, чтобы портал был еще лучше.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Обсуждение статей »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB