Постраничная навигация на php и mysql pdo

Постраничная навигация на php и mysql pdo

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Автор: IT-студия SoftTime (softtime.ru)

Проблема реализации постраничной навигации часто встает перед начинающими PHP-программистами. К разбиению объёмного текста на отдельные страницы прибегают во многих Web-приложениях от гостевых книг и форумов до различных каталогов. Давайте
решим эту проблему.
Итак, что нам требуется для реализации постраничной навигации? Для примера возьмем гостевую книгу, содержащую несколько сотен сообщений, в которой требуется выводить на страницу Х сообщений.
Рассмотрим задачу более конкретно. Сообщения пользователей хранятся в базе данных post со следующей структурой:

  • id – номер сообщения,
  • text – тело сообщения,
  • name – имя автора,
  • time – время создания.
Читайте также:  Значок вай фай серого цвета

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

где 4 — текущая станица. Для того чтобы отслеживать текущую страницу, будем использовать параметр page, передаваемый через URL. К примеру:

Здесь X — номер станицы (для примера, пусть Х будет равно 25).

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

// Устанавливаем соединение с базой данных
include "config.php" ;
// Переменная хранит число сообщений выводимых на станице
$num = 25 ;
// Извлекаем из URL текущую страницу
$page = $_GET [ ‘page’ ];
// Определяем общее число сообщений в базе данных
$result = mysql_query ( "SELECT COUNT(*) FROM post" );
$posts = mysql_fetch_row ( $result );
// Находим общее число страниц
$total = intval (( $posts — 1 ) / $num ) + 1 ;
// Определяем начало сообщений для текущей страницы
$page = intval ( $page );
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю
if(empty( $page ) or $page 0 ) $page = 1 ;
if( $page > $total ) $page = $total ;
// Вычисляем начиная к какого номера
// следует выводить сообщения
$start = $page * $num — $num ;
// Выбираем $num сообщений начиная с номера $start
$result = mysql_query ( "SELECT * FROM post LIMIT $start, $num" );
// В цикле переносим результаты запроса в массив $postrow
while ( $postrow [] = mysql_fetch_array ( $result ))
?>

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

echo "

" ;
for( $i = 0 ; $i $num ; $i ++)
<
echo "

" ;
>
echo "

" . $postrow [ $i ][ ‘name’ ]. " " . $postrow [ $i ][ ‘time’ ]. "
" . $postrow [ $i ][ ‘text’ ]. "

" ;
?>

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

// Находим две ближайшие станицы с обоих краев, если они есть
if( $page — 2 > 0 ) $page2left = ‘ . ( $page — 2 ) . ‘>’ . ( $page — 2 ) . ‘ | ‘ ;
if( $page — 1 > 0 ) $page1left = ‘ . ( $page — 1 ) . ‘>’ . ( $page — 1 ) . ‘ | ‘ ;
if( $page + 2 $total ) $page2right = ‘ | . ( $page + 2 ) . ‘>’ . ( $page + 2 ) . » ;
if( $page + 1 $total ) $page1right = ‘ | . ( $page + 1 ) . ‘>’ . ( $page + 1 ) . » ;

// Вывод меню
echo $pervpage . $page2left . $page1left . ‘‘ . $page . ‘‘ . $page1right . $page2right . $nextpage ;

Уважаемые пользователи! Мы благодарим Вас за то, что Вам интересен нашен контент, поэтому с каждым днем хотим становиться все лучше и лучше!

Большое спасибо за вашу помощь и внимательность к нам!

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

Создадим базу данных navigation с привилегиями: имя пользователя — "root", пароль -"". В ней будем хранить две таблицы: materials и navigation. В таблице materials будут два поля: id и title, а в таблице navigation будут тоже два поля: id и materials.

Таблица materials.

Таблица navigation.

Для начала, давайте подключимся к базе данных MySQL.

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

Во-первых, таким образом будет проще изменять количество материалов с помощью обновления при обращении к таблице navigation. Во-вторых, не потребуется водить значение количества материалов в переменную. При перемещении по навигации, задействована данная страница index.php, поэтому если у Вас навигация будет находится в другом файле, который по другому назван, соответственно исправьте на нужный!

Ну и последнее действие, это вывод всех материалов. Делаем запрос к таблице materials и выводим оттуда все записи из таблицы, а также не забываем прописать переменные с лимитом $start и $num, — это в общем, то и есть наша постраничная навигация.

Предадим немного стилей нашей навигации.

Надеюсь, данный урок был Вам полезен и возможно где-то пригодиться или уже пригодился! Если же вдруг Вам не нужна постраничная навигация, а примеру Вы хотите чтобы данные подгружались, советую рассмотреть материал AJAX подгрузка контента при прокрутке, возможно она Вам больше пригодится!

Есть одно еще маленькое замечание, если потребуется вывести блог с изменением количества материалов на странице, ну допустим, в select будет список количества материалов на странице 1, 3, 10, 15 и так далее — пишите в комментариях и я расскажу как это можно реализовать. Спасибо всем за внимание, удачи!

Ссылка на основную публикацию
Портативная акустика hi end
в 301 интернет-магазине в 507 интернет-магазинах в 688 интернет-магазинах в 50 интернет-магазинах в 8 интернет-магазинах в 181 интернет-магазине в 471...
Платный ватсап с субботы правда или нет
Платный Ватсап – это миф или реальность? Сообщение, в котором содержится оповещение «Ватсап станет платным в субботу» поступило на смартфоны...
Платный контент что это такое в телефоне
За последние несколько лет операционная система Андроид побила все рекорды популярности и смогла существенно потеснить IOS. На продукцию, выпускаемую под...
Портативная колонка через bluetooth
Для прослушивания музыки на природе или в компании наушники или встроенный проигрыватель телефона использовать неудобно. Этими девайсами нельзя обеспечить комфортное...
Adblock detector