Решил описать такой на первый взгляд простой но очень интересный момент в web программирование как пагинация.
Наверное каждый web программист хоть раз да и сталкивался с пагинацией, и понимает что универсального решения нет! По этому я предлагаю посмотреть те простые решения которые сам использую.
P.s. В топике приведен пример пагинации на php, без использования AXAJ и тд. Это сделано для того что б продемонстрировать саму суть, так сказать сделать каркас.
Поехали!И так начнем. Представим что у нас есть большое количество какого то контента контента (заметки, товары и тд). И вот в один момент мы понимаем что отображать все это на одной странице, неправильно и не хорошо. По этому мы решаем этот контент разбить на части (страницы).
Но для того что б нам это сделать нам нужно знать несколько значений.
- Количество всех страниц.
- Количество отображаемых страниц в пагинации.
- Текущую страницу
Допустим количество всех страниц нам известно и оно 45. Текущую страницу мы будем брать с $_GET"а, а если её там нет, то задавать она будет ровна 1.
А вот с количеством отображаемых страниц все интересней, я решил дать нашему скрипту немного гибкости, так что мы могли сами задать количество ссылок с лева и права от текущей странице, выглядит это примерно так:
/*текущая страница*/
$iCurr = (empty($_GET["page"]) ? 1: intval($_GET["page"]));
/*всего страниц или конечная страница*/
$iLastPage = 45;
/*левый и правый лимиты*/
$iLeftLimit = 4;
$iRightLimit = 5;
/*вызов функции*/
makePager($iCurr, $iLastPage, $iLeftLimit, $iRightLimit) ;
Ну вот все данные у нас уже есть и можно заняться самой функцией пагинации.
Наша функция называеться «makePager», и она ожидает от нас 4 параметра:
Код:
function makePager($iCurr, $iEnd, $iLeft, $iRight)
{
if($iCurr > $iLeft && $iCurr < ($iEnd-$iRight))
{
for($i=$iCurr-$iLeft; $i