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 :: постраничная навигация а-ля google :)

 PHP.SU

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


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

> Без описания
tuareg
Отправлено: 23 Июля, 2012 - 21:31:16
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


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




На форуме периодически поднимается тема с постраничной навигацией. Я предлагаю свою простую реализацию. Специально не стал оборачивать код в ф-ю или класс. Кому надо тот сам реализует это под свои нужды. Код прост до идиотизма Улыбка
PHP:
скопировать код в буфер обмена
  1.  
  2. $printPage=10;//кол-во ссылок на страницы выводимых за раз
  3. $countPage=20;//всего страниц в эту переменную можно подставить результат COUNT(*)
  4. $currentPage=(empty($_GET['page']))?1:(int)$_GET['page'];// #страницы по умолчанию
  5. if($currentPage<1){// если страница не существует на первую
  6.         $currentPage=1;
  7. }
  8. if($currentPage>$countPage){// если страницы не существует на последнюю
  9.         $currentPage=$countPage;
  10. }
  11. $toFirstPage=ceil($printPage/2)*-1+$currentPage;//До первой страницы
  12. $begin=($toFirstPage<=1)?1:$toFirstPage;// Начало цикла
  13. $end=$begin+$printPage-1; // конец цикла
  14. if($end>$countPage){ // Если конец цикла больше общего количества страниц
  15.         $begin-=$end-$countPage; // смещаем начало на разницу
  16.         if($begin<1){// если страниц меньше чем $printPage
  17.                 $begin=1;
  18.         }
  19.         $end=$countPage;
  20. }
  21. $str='';
  22. for($i=$begin;$i<=$end;$i++){
  23.   $str.='<a href="/paginator.php?page='.$i.'" '.(($i==$currentPage)?'class="current"':'').'>'.$i.'</a>  ';
  24. }
  25. $prevPage=($currentPage!=1)?'<a href="/paginator.php?page='.($currentPage-1).'">Предыдущая</a>   ':'';
  26. $firstPage=($begin!=1)?'<a href="/paginator.php?page=1">Первая</a> ':'';
  27. $nextPage=($currentPage!=$countPage)?'<a href="/paginator.php?page='.($currentPage+1).'">Следующая</a>   ': '';
  28. $lastPage=($end!=$countPage)?'<a href="/paginator.php?page='.$countPage.'">Последняя</a>' : '';
  29. echo $firstPage.$prevPage.$str.$nextPage.$lastPage;
  30.  

Прикладываю файл с примером.
P.S Это полностью рабочий код. Единственное надо только добавить превью.
Скачать файл: paginator.zip
Скачан раз: 190
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Пользовательские функции »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB