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]   

> Описание: только по существу
Mister
Отправлено: 03 Апреля, 2009 - 16:24:20
Post Id



Посетитель


Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2007  
Откуда: Сухиничи Калуж.обл.


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

[+]


Нашёл пример постраничной навигации http://www.php.su/articles/?cat=...les&page=062 переделал немного под свои запросы.
PHP:
скопировать код в буфер обмена
  1. include "templates/header.tpl";
  2. require_once "admin/config.php";
  3. // Переменная хранит число сообщений выводимых на станице
  4. $number = 5;
  5. // Извлекаем из URL текущую страницу
  6. $archiv = $_GET['archiv'];
  7. // Определяем общее число сообщений в базе данных
  8. $result = mysql_query("SELECT COUNT(*) FROM meropr WHERE meropr_date<NOW() ORDER BY meropr_date");
  9. $posts = mysql_fetch_row($result);
  10. // Находим общее число страниц
  11. $total = 1000/*intval(($posts - 1)/$number) + 1*/; если здесь оставить всё как в первоначальном коде, то выдаёт ошибку
  12. Fatal error: Unsupported operand types in T:\home\localhost\zakaz\archiv.php on line 13 , поэтому временно сделал значение 1000
  13. // Определяем начало сообщений для текущей страницы
  14. $archiv = intval($archiv);
  15. // Если значение $page меньше единицы или отрицательно
  16. // переходим на первую страницу
  17. // А если слишком большое, то переходим на последнюю
  18. if(empty($archiv) or $archiv < 0) $archiv = 1;
  19.   if($archiv > $total) $archiv = $total;
  20. // Вычисляем начиная к какого номера
  21. // следует выводить сообщения
  22. $start = $archiv * $number - $number;
  23. // Выбираем $num сообщений начиная с номера $start
  24. $result = mysql_query("SELECT * FROM meropr WHERE meropr_date<NOW() LIMIT $start, $number");
  25. // В цикле переносим результаты запроса в массив $postrow
  26. echo "<table>";
  27. while ( $postrow[] = mysql_fetch_array($result))  
  28. echo " ";
  29. for($i = 0; $i < $number; $i++)
  30. {
  31.         echo "<tr>
  32.                 <td width=\"80%\" align=\"left\">&nbsp;<a href=\"doc.php?id_meropr=".$postrow[$i]['id_meropr']."&".$postrow[$i]['meropr_path']."\" title=\"Просмотр конкурсной  документации для скачивания\">".$postrow[$i]['meropr']."</a></td><td>".$postrow[$i]['meropr_date']."</td>";
  33. }
  34. echo "</table>";  
  35. // Проверяем нужны ли стрелки назад
  36. if ($archiv!=1) $pervarchiv = '<a href=./archiv.php?archiv=1><<</a><a href=./archiv.php?archiv='. ($archiv-1) .'><</a> ';
  37. // Проверяем нужны ли стрелки вперед
  38. if ($archiv!=$total) $nextarchiv = '<a href=./archiv.php?archiv='.($archiv+1).'>></a><a href=./archiv.php?archiv='.$total.'>>></a>';
  39.  
  40. // Находим две ближайшие станицы с обоих краев, если они есть
  41. if($archiv-2>0) $archiv2left = '<a href= ./archiv.php?archiv='. ($archiv-2) .'>'. ($archiv-2) .'</a> | ';
  42. if($archiv-1>0) $archiv1left = '<a href= ./archiv.php?archiv='. ($archiv-1) .'>'. ($archiv-1) .'</a> | ';
  43. if($archiv+2<=$total) $archiv2right = ' | <a href= ./archiv.php?archiv='. ($archiv+2) .'>'. ($archiv+2) .'</a>';
  44. if($archiv+1<=$total) $archiv1right = ' | <a href= ./archiv.php?archiv='. ($archiv+1) .'>'. ($archiv+1) .'</a>';
  45. // Вывод меню
  46. echo $pervarchiv.$archiv2left.$archiv1left.'<b>'.$archiv.'</b>'.$archiv1right.$archiv2right.$nextarchiv;

Дальше всё работает вроде нормально, выдаёт навигацию в виде << < 1 | 2 | 3 и т.д.
Ссылки работают, но на первой странице ошибка
Notice: Undefined variable: archiv2left in T:\home\localhost\zakaz\archiv.php on line 47

Notice: Undefined variable: pervarchiv in T:\home\localhost\zakaz\archiv.php on line 47

Notice: Undefined variable: archiv1left in T:\home\localhost\zakaz\archiv.php on line 47
На второй
Notice: Undefined variable: archiv2left in T:\home\localhost\zakaz\archiv.php on line 47

Notice: Undefined variable: pervarchiv in T:\home\localhost\zakaz\archiv.php on line 47
На третьей
Notice: Undefined variable: archiv2left in T:\home\localhost\zakaz\archiv.php on line 47
Начиная с четвёртой ошибка исчезает.
Подскажите, в чём проблема?


-----
..я не специалист, а только учусь
 
 Top
Гость
Отправлено: 03 Апреля, 2009 - 17:15:12
Post Id


УДАЛЁН










Напшиите в ваш .htaccess фйл рядом с вашей программой следующее
php_value error_reporting E_ALL & ~E_NOTICE
 
 Top
Roler
Отправлено: 03 Апреля, 2009 - 17:50:28
Post Id



Посетитель


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


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




Общее число страниц можно найти проще:
CODE (text):
скопировать код в буфер обмена
  1. $pages = ceil(число элементов / число элементов на странице);

(Отредактировано автором: 03 Апреля, 2009 - 17:50:52)

 
 Top
Mister
Отправлено: 03 Апреля, 2009 - 19:49:52
Post Id



Посетитель


Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2007  
Откуда: Сухиничи Калуж.обл.


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

[+]


Общее количество постов нахожу теперь
PHP:
скопировать код в буфер обмена
  1. $result = mysql_query("SELECT * FROM meropr WHERE meropr_date<NOW()");
  2. $posts = mysql_num_rows($result);


JustUserR пишет:
Напшиите в ваш .htaccess фйл рядом с вашей программой следующее
php_value error_reporting E_ALL & ~E_NOTICE


но ведь ошибка никуда не уйдёт.
Хотя итак всё корректно работает.


-----
..я не специалист, а только учусь
 
 Top
Гость
Отправлено: 03 Апреля, 2009 - 20:37:15
Post Id


УДАЛЁН










Это не ошибка идаже не предупреждение а просто нотис - на него можно не обращать внимания - вам просто говорят что прееменаня не определена
 
 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