Все для создания и продвижения сайтов

Верстка, программирование, SEO

Постраничная навигация php: простой скрипт

С проблемой создания постраничной навигации на языке php сталкиваются многие новички-программисты и не все понимают, как она должна работать. Рассмотрим подробно и по пунктам, как создать самую простую пагинацию.

Для начала представим, что у нас уже есть запрос, который в нужном формате выводит все записи из нужной таблицы.

// Подключение к бд
$db = mysql_connect("localhost","root","");
mysql_select_db("phpsite",$db);

// Вывод записей из таблицы
$result = mysql_query("SELECT * FROM `lessons`", $db);
$myrow = mysql_fetch_array($result);

do{
    echo "<h2>".$myrow['title']."</h2>";
    echo "<p>".$myrow['text']."</p>";
} while ($myrow = mysql_fetch_array($result));

Разбиваем страницы на нужное количество

Мы получили все записи на странице, но теперь их нужно разбивать. Для разбития на страницы мы добавим в наш запрос - вывод определённого количества записей, с помощью "LIMIT".

$result = mysql_query("SELECT * FROM `lessons` LIMIT $art,$kol",$db);

Где:

  • "$art" - показывает с какой записи выводить;
  • "$kol" - количество записей для вывода.

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

К примеру, мы выводим по две записи на страницу, то есть если мы находимся на 1 странице - выводим первые две записи.

$page = 1; // текущая страница
$kol = 3;  //количество записей для вывода
$art = ($page * $kol) - $kol; // определяем, с какой записи нам выводить

$result = mysql_query("SELECT * FROM `lessons` LIMIT $art,$kol",$db);

Переменную $art мы получаем по формуле - количество записей умножаются на текущую страницу, тем самым мы получаем последнюю запись на текущей странице. И вычитаем "количество записей на страницу".

Определяем страницу, на которой находимся

Теперь у нас для нужной страницы отображаются нужные записи, но нужно ещё определить, на какой мы странице находимся, для этого воспользуемся глобальной переменной $_GET.

if (isset($_GET['page'])){
   $page = $_GET['page'];
}else $page = 1;

Мы получаем текущую страницу через переменную $_GET, а если мы этой переменной нет, то у нас по умолчанию первая страница.

Формируем постраничную навигацию

Для формирования и вывода пагинации нам нужно узнать количество всех записей, найдём это через простой запрос:

$res = mysql_query("SELECT COUNT(*) FROM `lessons`");
$row = mysql_fetch_row($res);
$total = $row[0]; // всего записей	

Затем нужно узнать, сколько у нас будет страниц:

$str_pag = ceil($total / $kol);

Делим количество записей на количество выводимых на страницу и округляем до большего числа

Теперь у нас есть всё, чтобы сформировать наши ссылки для навигации, выведем через цикл:

for ($i = 1; $i <= $str_pag; $i++){
  echo "<a href=lessons.php?page=".$i."> Страница ".$i." </a>";
}
Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.