—»     —»   Постраничная навигация с помощью PHP
  Раздел: Меню и Навигация   Комментариев: 3  

Постраничная навигация с помощью PHP



Постраничная навигация с помощью PHP

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

Демо | Исходники

Как обычно выкладываю демо-версию и исходные материалы данного урока. В демо-версии можете посмотреть постраничную навигацию, которую мы сейчас будем делать.

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

Шаг 1. База данных

Первым делом нам нужно создать БД и пользователя. А также создать таблицу и заполнить ее информацией. В моем примере БД называется navigation, а таблица называется news.

Структуру таблицы смотрите на скриншоте ниже:
Постраничная навигация с помощью PHP

Таблица состоит из 3-х полей — id, title, text.

Шаг 2. Подключение к БД

Теперь нам нужно написать подключение к БД. Для этого я создал новый файл и назвал его cfg.php. В этом файле я написал следующий код:


<?

$host = 'localhost';
$user = 'testuser';
$pswd = '123';
$database = 'navigation';

$connect = mysql_connect($host, $user, $pswd, $database);
mysql_set_charset('utf8', $connect);

if (!$connect || !mysql_select_db($database, $connect))

{
exit(mysql_error());
}

?>

В данном коде нет ничего сложного. Мы написали обычное подключение к БД и прописали условие, если вдруг что-то пойдет не так, то у нас выдаст ошибку. Также прописали кодировку БД — utf8.

Шаг 3. Вывод информации из БД

Теперь создадим файл и назовем его index.php. Это будет наш основной файл. В нем будут выводится записи и здесь же мы будем формировать постраничную навигацию. Не забудьте в файл index.php подключить файл cfg.php. Для этого где-нибудь в начале странице напишите такой код:


<?
include("cfg.php");
?>

Для того, чтобы вывести информацию из БД я написал в файле index.php вот такой код:


<?
$query = mysql_query("SELECT * FROM news");

$array = mysql_fetch_array($query);

do

{
echo $array["title"];
echo "<br>";
echo $array["text"];
echo "<br><br>";
}

while($array = mysql_fetch_array($query));
?>

В этом коде тоже нет ничего не обычного. Мы выбрали всю информацию из таблицы news и вывели ее с помощью цикла do/while.

Шаг 4. Первая часть скрипта

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


$num = 5;
$page = $_GET['page'];
$result00 = mysql_query("SELECT COUNT(*) FROM news");
$temp = mysql_fetch_array($result00);
$posts = $temp[0];
$total = (($posts - 1) / $num) + 1;
$total = intval($total);
$page = intval($page);
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
$start = $page * $num - $num;

Данная строчка $num = 5; отвечает за количество статей на странице. Вместо цифры 5 можете поставить свое значение.
Также нужно немного изменить саму выборку информацию и добавить к ней следующее:


$query = mysql_query("SELECT * FROM news ORDER BY id LIMIT $start, $num");

Наш код теперь должен выглядеть так:


<?
$num = 3;
$page = $_GET['page'];
$result00 = mysql_query("SELECT COUNT(*) FROM news");
$temp = mysql_fetch_array($result00);
$posts = $temp[0];
$total = (($posts - 1) / $num) + 1;
$total = intval($total);
$page = intval($page);
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
$start = $page * $num - $num;

$query = mysql_query("SELECT * FROM news ORDER BY id LIMIT $start, $num");
$array = mysql_fetch_array($query);

do

{
echo $array["title"];
echo "<br>";
echo $array["text"];
echo "<br><br>";
}

while($array = mysql_fetch_array($query));

?>

Шаг 5. Выводим навигацию

В этом шаге нам нужно вывести саму навигацию, которая будет иметь вид 1 | 2 | Следующая | Последняя. Для этого в файле index.php под предыдущем кодом открываем php-теги и пишем внутри них такой код:


<?
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href="index.php?page=1">Первая</a> | <a href="index.php?page='." ($page="" -="" 1)="" .'="">Предыдущая</a> | ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' | <a href="index.php?page='." ($page="" +="" 1)="" .'="">Следующая</a> | <a href="index.php?page='" .$total.="" '="">Последняя</a>';

// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 5 > 0) $page5left = ' <a href="index.php?page='." ($page="" -="" 5)="" .'="">'. ($page - 5) .'</a> | ';
if($page - 4 > 0) $page4left = ' <a href="index.php?page='." ($page="" -="" 4)="" .'="">'. ($page - 4) .'</a> | ';
if($page - 3 > 0) $page3left = ' <a href="index.php?page='." ($page="" -="" 3)="" .'="">'. ($page - 3) .'</a> | ';
if($page - 2 > 0) $page2left = ' <a href="index.php?page='." ($page="" -="" 2)="" .'="">'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href="index.php?page='." ($page="" -="" 1)="" .'="">'. ($page - 1) .'</a> | ';

if($page + 5 <= $total) $page5right = ' | <a href="index.php?page='." ($page="" +="" 5)="" .'="">'. ($page + 5) .'</a>';
if($page + 4 <= $total) $page4right = ' | <a href="index.php?page='." ($page="" +="" 4)="" .'="">'. ($page + 4) .'</a>';
if($page + 3 <= $total) $page3right = ' | <a href="index.php?page='." ($page="" +="" 3)="" .'="">'. ($page + 3) .'</a>';
if($page + 2 <= $total) $page2right = ' | <a href="index.php?page='." ($page="" +="" 2)="" .'="">'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' | <a href="index.php?page='." ($page="" +="" 1)="" .'="">'. ($page + 1) .'</a>';

// Вывод меню если страниц больше одной

if ($total > 1)
{
Error_Reporting(E_ALL & ~E_NOTICE);
echo "<div class="\"pstrnav\"">";
echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.
'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
echo "</div>";
}
?>

Шаг 6. Результат проделанной работы

Теперь можно все сохранить и проверить. В моем примере на страницы будут выводится по 5 записей.

На этом все, данный урок окончен. Спасибо за внимание!

Полный код всех страниц и код скрипта вы можете посмотреть в исходниках. Скачать исходники вы можете по ссылке в начале урока абсолютно бесплатно и без рекламы.

Автор урока: Артур Хабиров
Урок для Вас подготовлен командой сайта www.red-star.pro.
Обнаружили ошибку или мёртвую ссылку?
Выделите проблемный фрагмент мышкой и нажмите CTRL+ENTER.
В появившемся окне опишите проблему и отправьте уведомление Администрации ресурса.
Нужна органическая вечная ссылка из данной статьи? Постовой?
Подробности здесь
Вам понравился материал? Поблагодарить легко!
Будем весьма признательны, если поделитесь этой статьей в социальных сетях:

Ключевые тэги: PHP
Опубликовал d1sapp3ar   Прочитано (раз): 4506   |   Оставлено комментариев: 3
Источник материала / оригинал статьи   Распечатать
Другие статьи и новости по теме:
Комментарий #1: 5 июня 2014 @ 10:41
Написал: Егор — группа: Гости  
На сайте с: --   |   Публикаций: 0   |   Комментариев: 0
ICQ: --- не указано ---
Выдает ошибку: Parse error: syntax error, unexpected '" -="' (T_CONSTANT_ENCAPSED_STRING
Комментарий #2: 5 июня 2014 @ 14:38
Написал: d1sapp3ar — группа: Гости  
На сайте с: --   |   Публикаций: 0   |   Комментариев: 0
ICQ: --- не указано ---
Цитата: Егор
Выдает ошибку: Parse error: syntax error, unexpected '" -="' (T_CONSTANT_ENCAPSED_STRING


Редактор кода на сайте не правильно код выдает (у меня на сайте оказывается тоже не правильно выдает), не должно быть -=. Скачайте исходники, там код верно отображается.

Строчка должна выглядеть так:

http://red-star.pro/errorcode.jpg


Проще наверно исходники скачать, а то опять не правильно выдаст код.
Комментарий #3: 5 июня 2014 @ 15:51
Написал: Евгений — группа: Гости  
На сайте с: --   |   Публикаций: 0   |   Комментариев: 0
ICQ: --- не указано ---
mysql_query ? Серьезно? Оно же "Warning
This extension is deprecated as of PHP 5.5.0, and will be removed in the future" Зачем вы людям мозги засоряете? Ненадо использовать старые функции. Юзайте PDO.
Добавление комментария
Уважаемые пользователи!
При добавлении комментариев на сайт Вам следует учитывать следующее - все комментарии проверяются Администрацией на предмет отсутствия спама. При обнаружении признаков спама, в оставленном Вами комментарии, сам комментарий будет незамедлительно удалён, а Ваш IP-адрес будет забанен без предупреждения! Учётные записи пользователей, рассылающих спам, блокируются/удаляются без права последующего восстановления.

С уважением, Администрация сайта.
* = поля обязательны к заполнению
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Вопрос : Назовите месяц February по-русски
Подтверждение кода безопасности :

Включите эту картинку для отображения кода безопасности
обновить, если не виден код


доработка сайта
seolabpro.ru
Популярные публикации


















Свежие шаблоны сайтов каждый день
С миру по нитке
«    Апрель 2017    »
ПнВтСрЧтПтСбВс
 12
3456789
10111213141516
17181920212223
24252627282930