Как сделать пагинацию на php
Перейти к содержимому

Как сделать пагинацию на php

  • автор:

Пагинация на PHP

простая пагинация на php

В этой статье мы рассмотрим как делается простая пагинация на языке PHP, скрипт будет не очень сложный, я думаю вы всё поймёте.

Подключение БД:

Первым делом как обычно нужно подключить базу данных, для этого видите этот код.

В этом коде первым делом у нас идут переменные для настройки при подключение БД, потом уже подключаемся, после пишем условии для проверки подключения базы данных, если его нет, то выводим надпись «Не удается подключиться к серверу базы данных!», и запрещаем дальше работать скрипту.

Создание пагинации на PHP:

Теперь перейдём к самому созданию основного кода, первым делом настроим номер страницы.

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

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

Теперь нужно вычислить сколько всего мы имеем страниц.

Тут сперва мы создаём строку с SQL запросом, которое получает количество элементов в БД, потом отправляем этот запрос в базу данных, и получаем число количества , потом вычисляем сколько всего страниц, делением количеств элементов, на число данных на одной странице.

Делаем вывод данных.

Здесь мы создаём SQL запрос и в нём после слова LIMIT назначаем от какого элемента брать и сколько, потом делаем запрос к БД, и вывод данные которые получили, закрываем соединение с MySQL.

Последние нужно добавить кнопки пагинации, для этого вот что пишем.

То есть тут добавляем пару кнопок и всё, также стоит сказать, что я использовал bootstrap, для более красивого отображения, его думаю сами сможете подключить, так мы сделали скрипт простой пагинации на PHP, вот результат.

скрипт простой пагинации на php

Если мы нажмём на кнопку «Next», то у нас переключится, вот это всё что нужно знать.

Вывод:

В этой статье вы прочитали как делается простая пагинация на PHP, также вы можете скачать скрипт, что больше понять как это всё работает.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Как разбить данные на страницы с помощью PHP

Я вспоминаю, когда много лет назад, когда я только начинал писать код PHP и MySQL, я был весьма рад, когда впервые моя информация из базы данных отобразилась в браузере.

Я был на триумфальной высоте перед теми, у кого не было больших знаний в сфере баз данных и программирования, и кто видел те строки таблицы, появляющимися на экране в результате написанного мною кода (ну хорошо, я просто скопировал пример из книги — не будем вдаваться в подробности). Возможно, я не вполне понимал всех тонкостей этой работы, но этот первый успех стимулировал меня к работе над большими и лучшими проектами.

Хотя мой уровень в отношении баз данных не таков, как был раньше, сейчас он значительно богаче,
со времени моего первого знакомства с PHP и MySQL, меня пленила
мысль делать вещи более простыми и легкими в использовании.

Как разработчик я постоянно сталкиваюсь с одной проблемой: принятие большого количества информации и попытка легко усвоить ее. Является ли это список клиентов крупной компании или личный mp3-каталог, вынужденность сидеть и смотреть на строку над строкой, строку над строкой разных данных может быть весьма скучным занятием
и даже более — вы можете разочароваться. Что может сделать хороший разработчик? Разбить на страницы!

1. Разбивка на страницы

Разбиение на страницы — это по существу процесс принятия набора результатов и распределение
их по страницам, чтоб их было легче читать.

example 1example 1 example 1

Ещё раньше я размышлял, если бы у меня было 500 строчек информации, которую нужно отобразить, это было бы
не только головной болью для того, кто попытается все это прочитать, но и большинство браузеров
потратили бы целую вечность (т.е. более чем пять секунд) на отображение этой информации.

Чтобы решить эту проблему я мог бы написать разные инструкции SQL, чтобы вытащить фрагменты данных, и если бы у меня
было хорошее настроение, я бы даже сделал пару кнопок, «далее» и «предыдущая».
Через некоторое время, мне нужно было внести этот код в очень похожий проект и настроить
его, чтобы подогнать под старый вариант. Быстро. И как каждый хороший разработчик знает, лень рождает изобретательность
или что-то в этом роде. Поэтому, однажды, я сел и решил придумать простой,
гибкий и легкий в использовании класс PHP, который автоматически бы делал грязную работу
вместо меня.

Несколько слов обо мне и классах PHP. Я не волшебник в сфере объектно-ориентированного программирования. На самом деле, я практически
никогда не использую подобные вещи. Но после прочтения некоторых примеров ООП и учебных материалов, а также
простых примеров проб и ошибок, я решил сделать решительный поворот, и знаете, что?
Он идеально работает для разбивки на страницы. Код, который я здесь использую, написан в PHP 4, но
он работает и в PHP 5.

2. База данных

Вам нужно любить MySQL. Не хочу обидеть другие системы баз данных, но
для меня, все что мне нужно — это MySQL. Одной из прекрасных особенностью MySQL является то, что они дают вам
некоторые бесплатные примеры баз данных, с которыми вы можете поиграться: http://dev.mysql.com/doc/#sampledb.

В моем случае я буду использовать всемирную базу данных (архив

90 k), которая содержит
свыше 4000 записей, с которыми можно поработать, но красота PHP-скрипта, который мы будем создавать, в том,
что его можна использовать для любой базы данных. Теперь, думаю, мы все можем согласиться, что если мы решили
не разбивать наши результаты, в итоге мы получим очень длинный и громоздкий
список результатов, как примерно показано ниже:

example 2

Потому давайте пойдем дальше, разбивая наши данные в легко обрабатываемые байты, как показано ниже:

example 3example 3 example 3

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

3. Пагинатор

Данный пример будет состоять с двух скриптов, многоразового класса paginator и файла index, который будет выводить элементы таблицы и элементы управления.

Paginator.class.php

Класс рaginator будет иметь только два метода и конструктор, мы будем строить их постепенно, объясняя каждый шаг по мере того, как мы движемся вперед.

Это определение только устанавливает необходимые члены-переменные пагинатора. Так как это вспомогательный класс и он разработан только для пагинации, он будет полагаться на валидное подключение к серверу MySQL и на уже определенный запрос, который мы добавим к параметрам, необходимым для разбивки результатов. Мы начнем с метода конструктор.

Довольно просто, не так ли? Этот метод только устанавливает соединение базы данных объекта и необходимый запрос, после чего он вычисляет общее количество строк, полученных этим запросом без каких-либо ограничений или пропусков параметров. Эта сумма необходима для создания ссылок для пагинатора.

Обратите внимание, что для простоты мы не выполняем проверку ошибок или любую другую проверку данных параметров, но в реальности эта проверка необходима.

Получение результатов

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

Давайте сейчас проанализируем этот шаг: сначала мы установили лимит и параметры страницы, которые по умолчанию установлены на 10 и 1 соответственно. Далее мы проверяем, запрашивает ли пользователь заданное число строк или все из них и, основываясь на этом и на параметрах страницы, мы устанавливаем параметр LIMIT этого запроса. Значение «-1» берется с учётом того, что мы начинаем нумерацию страницы с 1, но не с 0.

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

Отображение пагинальных ссылок

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

Это довольно длинный метод, примерно на 34 строки кода, потому давайте объясним, что как происходит в этом методе.

  1. Сначала мы оцениваем, требует ли пользователь заданное количество ссылок или все из них, в противном случае, мы просто возвращаем пустую строку, так как пагинация не требуется.
  2. После этого мы вычисляем последнюю страницу на основе общего количества доступных строк и элементов, необходимых для каждой страницы.
  3. После этого мы берем параметры ссылок, которые отображают количество ссылок, которые нужно разместить вверху и внизу текущей страницы и вычисляем, когда создать начальную и конечную ссылку.
  4. Теперь мы создаем открывающий тег для списка и устанавливаем для него параметр класса и добавляем ссылку «предыдущая страница». Обратите внимание, что для этой ссылки мы проверяем, является ли текущая страница первой, и если да, то мы устанавливаем для ссылки свойство «недоступен».
  5. На данный момент мы отображаем ссылку на первой странице и символ многоточия в случае, если начальная ссылка не является первой.
  6. Затем мы добавляем ссылки ниже и выше текущей страницы, исходя из ранее вычисленных начальных и конечных параметров. На каждом шагу мы снова оцениваем текущую страницу, отображаемую страницу ссылки, и соответственно устанавливаем активный класс.
  7. После этого мы отображаем другой символ многоточия и ссылку на последнюю страницу в случае, если конечная ссылка не есть последняя.
  8. Наконец мы показываем ссылку «Следующая страница» и устанавливаем отключенное состояние, когда пользователь просматривает последнюю страницу. Закройте список и вернитесь на сгенерированную строку HTML.

Это все, что касается Paginator.class. Конечно, мы могли бы добавить сеттеры и геттеры для подключения к базе данных, ограничения, страницы, запрос и полные параметры, но для простоты мы сохраним его таким как есть.

4. Index.php

Теперь мы создадим файл, отвечающий за использование класса Paginator и отображение данных, поэтому сначала позвольте мне показать вам базовый HTML.

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

Использование пагинатора

Теперь, чтобы воспользоваться классом пагинатора, добавьте следующий РНР-код в верхней части документа.

Этот скрипт достаточно прост. Мы просто вызвали класс пагинатор, обратите внимание, что этот код предполагает, что этот файл находится в той же папке, что и файл index.php . Если это не так, вы должны соответствующим образом обновить путь.

Затем мы создаем соединение с нашей базой данных с помощью библиотеки MySQLi, извлекаем параметры пагинатора из запроса GET и устанавливаем запрос, так как это не статья на MySQL или что-либо другое, во что я не буду вдаваться в подробности.

Наконец, мы создали объект Paginator и извлекли результаты для текущей страницы.

Отображение результатов

Теперь, чтобы отобразить полученные результаты, добавьте следующий код в тело таблицы.

Здесь мы просто повторяем атрибут данных результатов, содержащих записи городов, и создавая строку таблицы для каждого из них.

Ссылки пагинации

Теперь, чтобы отобразить ссылки пагинатора, добавьте следующий код ниже таблицы.

Для метода Paginator createLinks мы передаем полученный параметр links и класс css для ссылок пагинации, использованных на bootstrap. Вот результат созданной страницы.

Заключение

Этот материал должен обеспечить вас всем, что вам нужно, чтобы осуществить пагинацию в вашем приложении.

Пожалуйста, не стесняйтесь, оставляйте ниже ваши вопросы, комментарии или обобщенный отзыв!

Постраничный вывод на PHP и MySQL

Пагинация PHP позволяет разделять данные по частям и получить ссылки на страницы. В этом руководстве мы расскажем, как создать простое разбиение на страницы в PHP и MySQL . Чтобы обеспечить повторное использование скрипта, мы создадим класс Pagination .

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

Перед тем, как мы начнём, взгляните на структуру файлов проекта.

  • php_pagination/
    • class.php
    • php
    • php

    Создание таблицы базы данных

    Следующий SQL-запрос создаёт таблицу posts в базе данных MySQL с основными столбцами.

    Класс Pagination

    Класс Pagination генерирует ссылки на страницы. Для настройки вида ссылок доступны различные параметры конфигурации PHP пагинации страниц.

    • $baseURL–URL веб-страницы.
    • $totalRows–общееколичествоэлементов.
    • $perPage–количествозаписейнастранице.
    • $numLinks–количествоотображаемыхссылок.
    • $firstLink–текстссылкинапервуюстраницу.
    • $nextLink–текстссылкинаследующуюстраницу.
    • $prevLink–текстссылкинапредыдущуюстраницу.
    • $lastLink–текстссылкинапоследнююстраницу.
    • $fullTagOpen–открывающийтэгблокассылок.
    • $fullTagClose–закрывающийтэгблокассылок.
    • $firstTagOpen–открывающийтэгпервогоэлемента.
    • $firstTagClose–закрывающийтэгпервогоэлемента.
    • $lastTagOpen–открывающийтэгпоследнегоэлемента.
    • $lastTagClose–закрывающийтэгпоследнегоэлемента.
    • $curTagOpen–открывающийтэгтекущегоэлемента.
    • $curTagClose–закрывающийтэгтекущегоэлемента.
    • $nextTagOpen–открывающийтэгследующегоэлемента.
    • $nextTagClose–закрывающийтэгследующегоэлемента.
    • $prevTagOpen–открывающийтэгпредыдущегоэлемента.
    • $prevTagClose–закрывающийтэгпредыдущегоэлемента.
    • $numTagOpen–открывающийтэгчисловогоэлемента.
    • $numTagClose–закрывающийтэгчисловогоэлемента.
    • $showCount–показыватьколичествостраниц.
    • $queryStringSegment–флагстрокизапросастраницыпри пагинации PHP MySQL .

    Простой пример использования класса пагинации PHP . Сначала включите и инициализируйте класс Pagination с некоторыми базовыми настройками.

    Чтобы отобразить ссылки на страницы, используйте метод createLinks() .

    Конфигурация базы данных (dbConfig.php)

    Файл dbConfig.php используется для соединения с MySQL и выбора базы данных для пагинации PHP . Укажите параметры хост ( $dbHost ), имя пользователя ( $dbUsername ), пароль ( $dbPassword ), и имя базы данных ( $dbName ) в соответствии с требованиями вашего сервера баз данных.

    Отображение данных с разбиением на страницы (index.php)

    В файле index.php ограниченный набор постов будет запрашиваться из базы данных, и отображаться вместе со ссылками на другие страницы. Для PHP пагинации страниц нужно создать объект класса Pagination и передать базовые параметры, чтобы сгенерировать ссылки на страницы. Чтобы отобразить ссылки, используйте метод createLinks() .

    Заключение

    Мы реализовали постраничный вывод на PHP и MySQL настолько просто, насколько это только возможно. Вы можете расширить функциональность этого класса.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *