На форуме периодически поднимается тема с постраничной навигацией. Я предлагаю свою простую реализацию. Специально не стал оборачивать код в ф-ю или класс. Кому надо тот сам реализует это под свои нужды. Код прост до идиотизма
PHP:
скопировать код в буфер обмена
$printPage=10;//кол-во ссылок на страницы выводимых за раз $countPage=20;//всего страниц в эту переменную можно подставить результат COUNT(*) $currentPage=(empty($_GET['page']))?1 :(int )$_GET['page'];// #страницы по умолчанию if($currentPage<1){// если страница не существует на первую $currentPage=1; } if($currentPage>$countPage){// если страницы не существует на последнюю $currentPage=$countPage; } $toFirstPage=ceil($printPage/2 )*-1 +$currentPage;//До первой страницы $begin=($toFirstPage<=1)?1:$toFirstPage;// Начало цикла $end=$begin+$printPage-1; // конец цикла if($end>$countPage){ // Если конец цикла больше общего количества страниц $begin-=$end-$countPage; // смещаем начало на разницу if($begin<1){// если страниц меньше чем $printPage $begin=1; } $end=$countPage; } $str=''; for($i=$begin;$i<=$end;$i++){ $str.='<a href="/paginator.php?page='.$i.'" '.(($i==$currentPage)?'class="current"':'').'>'.$i.'</a> '; } $prevPage=($currentPage!=1)?'<a href="/paginator.php?page='.($currentPage-1).'">Предыдущая</a> ':''; $firstPage=($begin!=1)?'<a href="/paginator.php?page=1">Первая</a> ':''; $nextPage=($currentPage!=$countPage)?'<a href="/paginator.php?page='.($currentPage+1).'">Следующая</a> ': ''; $lastPage=($end!=$countPage)?'<a href="/paginator.php?page='.$countPage.'">Последняя</a>' : ''; echo $firstPage.$prevPage.$str.$nextPage.$lastPage;
Прикладываю файл с примером.
P.S Это полностью рабочий код. Единственное надо только добавить превью.
|