С проблемой создания постраничной навигации на языке 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>";
}
html-cсылка на публикацию | |
BB-cсылка на публикацию | |
Прямая ссылка на публикацию |