Перелистывание страниц на PHP 


Перелистывание страниц на PHP

Опубликовано

Перелистывание страниц, необходимая вещь для вебсайта, позволяющая разбить громоздкий контент на несколько мелких частей.

Далее на простом примере будет показано реализация пролистывания страниц. Итак, пусть есть таблица в базе, в которой находятся 200 строк. Задача состоит в том, чтобы разместить их на 20 страницах. Получается, что на каждую страницу будет по 10 строк. Количество страниц-ссылок пролистывания (в дальнейшем я буду называть его [листинг]) будет равняться 9 (их количество обязательно должно быть нечетное и более 3), плюс ссылка на первую и последнюю страницы.

Визуально это будет выглядеть следующим образом:

Пролистывание страниц

Переменные:

if (!empty($_GET["page"])){$page=$_GET["page"];}else{$page=1;} //В переменной $page будет содержаться номер текущей страницы;
$rows=200; //Общее количество строк;
$rowsonpage=10; //Количество строк на странице;
$quantitylist=9; //Количество страниц-ссылок [листинга], плюс "Первая" и "Последняя";
$quantitylistMax=ceil($rows/$rowsonpage); //Общее количество страниц-ссылок [листинга]. Результат равен 20;
$quantitylisMiddle=ceil($quantitylist/2); //Середина [листинга]. Результат равен 5;
$quantitylistStart=1; //Номер с которой начинается страница-ссылка [листинг];
$FirstPage=false; //Отображать/скрывать ссылку "Первая" в [листинге];
$LastPage=false; //Отображать/скрывать ссылку "Последняя" в [листинге];

Далее определяем номер страницы-ссылки, с которой начнется отсчет в [листинге], зависит от переменной ($page):

if ($quantitylistMax<=$quantitylist){
   $quantitylist=$quantitylistMax;
   $quantitylistStart=1;
}elseif ($page<$quantitylisMiddle){
   $quantitylistStart=1;
   $LastPage=true;
}elseif ($page>=$quantitylisMiddle and ($quantitylistMax-$page)>=$quantitylisMiddle){
   $quantitylistStart=$page-$quantitylisMiddle+1;
   $FirstPage=true;
   $LastPage=true;
}elseif (($quantitylistMax-$page)<$quantitylisMiddle){
   $quantitylistStart=$quantitylistMax-$quantitylist+1;
   $FirstPage=true;
}

Выводим страницы-ссылки [листинга]:

if ($quantitylistMax>1){
  //Первая страница
  if ($FirstPage and $quantitylistStart<>1){
    print "<a href="http://{$_SERVER["HTTP_HOST"]}{$_SERVER["PHP_SELF"]}?page=1" title="Первая страница">&larr;</a> ";
  }

  //Остальные страницы
  for ($i=$quantitylistStart;$i<($quantitylistStart+$quantitylist);$i++){
    if ($i==$page){print " {$i} ";}
    else{print " <a href="http://{$_SERVER["HTTP_HOST"]}{$_SERVER["PHP_SELF"]}?page={$i}">{$i}</a>";}
  }

  //Последняя страница
  if ($LastPage and ($quantitylistStart+$quantitylist)<=$quantitylistMax){
    print " <a href="http://{$_SERVER["HTTP_HOST"]}{$_SERVER["PHP_SELF"]}?page={$quantitylistMax}" title="Последняя страница">&rarr;</a> ";
  }
}