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