11
Декабрь
2008
Пагинация на PHP
posted in PHP, Разработка |Частенько приходится разбивать контент на сайтах постранично и выводить «менюшку» со списком номеров страниц, плюс ссылочки для перехода на предыдущую, следующую, первую и последнюю страницы.
С этим можно справиться таким кодом:
<?php $itemscount=123; // количество элементов (статей) $itemsperpage=10; // кол-во эл-в на странице if (isset($_REQUEST['page'])) { $cpage=$_REQUEST['page']; } else { $cpage=1; } // если странца не задана, то будем на 1й $pagescount=ceil($itemscount/$itemsperpage); //кол-во страниц if ($cpage>1) { // первая echo '<a href="?page=1"><<</a> '; // предыдущая echo '<a href="?page='.($cpage-1).'"><</a> '; } if ($stpage>1) echo '... '; for ($i=$stpage;$i<=$endpage;$i++) { if ($i==$cpage) { echo '<strong>'.$i.'</strong> '; } else { echo '<a href="?page='.$i.'">'.$i.'</a> '; } } if ($endpage<$pagescount) echo '... '; if ($cpage<$pagescount) { // след. echo '<a href="?page='.($cpage+1).'">></a> '; // последняя echo '<a href="?page='.$pagescount.'">>></a> '; } ?>
Такой код хорош, если у вас страничек 5, но вот если их количество значительное, то намного приятнее будет смотреться что-что вроде:
<< < ... 10 11 12 13 14 15 16 … > >>
Сейчас мы его «сбацаем»
<?php /* * Created on Dec 9, 2008 - 3:52:58 PM * by Vladimir Osipov */ $itemscount=123; // количество элементов (статей) $itemsperpage=10; // кол-во эл-в на странице if (isset($_REQUEST['page'])) { $cpage=$_REQUEST['page']; } else { $cpage=1; } // если странца не задана, то будем на 1й $pagedisprange=3; // соклько страниц до и после текущей выводить $pagescount=ceil($itemscount/$itemsperpage); // кол-во страниц $stpage=$cpage-$pagedisprange; // определим начиная с какого номера будем выводить страницы if ($stpage<1) { $stpage=1; } // если наше "начало" вылазит на отрицательные номера, то стави м в 1 $endpage=$cpage+$pagedisprange; // аналогично с номером, по который будем выводить if ($endpage>$pagescount) { $endpage=$pagescount; } // если больше чем страниц, то последняя выводимая страницы - самая последняя наша if ($cpage>1) { // first echo '<a href="?page=1"><<</a> '; // prev echo '<a href="?page='.($cpage-1).'"><</a> '; } if ($stpage>1) echo '... '; // если начало вывода не 1, то напечатаем три точки for ($i=$stpage;$i<=$endpage;$i++) { if ($i==$cpage) { echo '<strong>'.$i.'</strong> '; } else { echo '<a href="?page='.$i.'">'.$i.'</a> '; } } if ($endpage<$pagescount) echo '... '; // если начало конец вывода не последняя страница, то напечатаем три точки if ($cpage<$pagescount) { // next echo '<a href="?page='.($cpage+1).'">></a> '; // last echo '<a href="?page='.$pagescount.'">>></a> '; } ?>
Вот такой простой код для красивой пагинации. Вскоре ждите PHP класс AJAX пагинации, где менюшку с линками странц будем реализовывать на JavaScript.