В этой статье мы рассмотрим как делается простая пагинация на языке PHP, скрипт будет не очень сложный, я думаю вы всё поймёте.
Подключение БД:
Первым делом как обычно нужно подключить базу данных, для этого видите этот код.
1 2 3 4 5 6 7 8 9 10 11 12 13 | $server = 'localhost'; // Имя или адрес сервера $user = 'root'; // Имя пользователя БД $password = ''; // Пароль пользователя $db = 'test'; // Название БД $db = mysqli_connect($server, $user, $password, $db); // Подключение // Check connection // Проверка на подключение if (!$db) { // Если проверку не прошло, то выводится надпись ошибки и заканчивается работа скрипта echo "Не удается подключиться к серверу базы данных!"; exit; } |
В этом коде первым делом у нас идут переменные для настройки при подключение БД, потом уже подключаемся, после пишем условии для проверки подключения базы данных, если его нет, то выводим надпись «Не удается подключиться к серверу базы данных!», и запрещаем дальше работать скрипту.
Создание пагинации на PHP:
Теперь перейдём к самому созданию основного кода, первым делом настроим номер страницы.
1 2 3 4 5 6 7 8 9 10 11 12 13 | // Поверка, есть ли GET запрос if (isset($_GET['pageno'])) { // Если да то переменной $pageno присваиваем его $pageno = $_GET['pageno']; } else { // Иначе // Присваиваем $pageno один $pageno = 1; } // Назначаем количество данных на одной странице $size_page = 5; // Вычисляем с какого объекта начать выводить $offset = ($pageno-1) * $size_page; |
Тут не чего особо сложного нет, в начале проверяем, если у нас GET запрос pageno
, который отвечает за номер страницы, если есть, то присваиваем этот номер переменной $pageno
, иначе ей даём значение один.
Также создаём переменную $size_page
в которой хранится сколько данных нужно выводить на одной страницы, и $offset
, которая вычисляет с какого элемента нужно начать выводить.
Теперь нужно вычислить сколько всего мы имеем страниц.
1 2 3 4 5 6 7 8 | // SQL запрос для получения количества элементов $count_sql = "SELECT COUNT(*) FROM `user`"; // Отправляем запрос для получения количества элементов $result = mysqli_query($db, $count_sql); // Получаем результат $total_rows = mysqli_fetch_array($result)[0]; // Вычисляем количество страниц $total_pages = ceil($total_rows / $size_page); |
Тут сперва мы создаём строку с SQL запросом, которое получает количество элементов в БД, потом отправляем этот запрос в базу данных, и получаем число количества , потом вычисляем сколько всего страниц, делением количеств элементов, на число данных на одной странице.
Делаем вывод данных.
1 2 3 4 5 6 7 8 9 10 11 | // Создаём SQL запрос для получения данных $sql = "SELECT * FROM `user` LIMIT $offset, $size_page"; // Отправляем SQL запрос $res_data = mysqli_query($db, $sql); // Цикл для вывода строк while($row = mysqli_fetch_array($res_data)){ // Выводим логин пользователя echo $row['login'] . '</br>'; } // Закрываем соединение с БД mysqli_close($db); |
Здесь мы создаём SQL запрос и в нём после слова LIMIT назначаем от какого элемента брать и сколько, потом делаем запрос к БД, и вывод данные которые получили, закрываем соединение с MySQL.
Последние нужно добавить кнопки пагинации, для этого вот что пишем.
1 2 3 4 5 6 7 8 9 10 | <ul class="pagination"> <li><a href="?pageno=1">First</a></li> <li class="<?php if($pageno <= 1){ echo 'disabled'; } ?>"> <a href="<?php if($pageno <= 1){ echo '#'; } else { echo "?pageno=".($pageno - 1); } ?>">Prev</a> </li> <li class="<?php if($pageno >= $total_pages){ echo 'disabled'; } ?>"> <a href="<?php if($pageno >= $total_pages){ echo '#'; } else { echo "?pageno=".($pageno + 1); } ?>">Next</a> </li> <li><a href="?pageno=<?php echo $total_pages; ?>">Last</a></li> </ul> |
То есть тут добавляем пару кнопок и всё, также стоит сказать, что я использовал bootstrap, для более красивого отображения, его думаю сами сможете подключить, так мы сделали скрипт простой пагинации на PHP, вот результат.
Если мы нажмём на кнопку «Next», то у нас переключится, вот это всё что нужно знать.
Вывод:
В этой статье вы прочитали как делается простая пагинация на PHP, также вы можете скачать скрипт, что больше понять как это всё работает.
Ещё стоит сказать, что я брал код с этого сайта, по ссылке.