Постраничная навигация с помощью PHP
Добрый вечер пользователи. Вы наверное часто встречали постраничную навигацию на сайтах. В данном уроке мы научимся делать такую постраничную навигацию.
Как обычно выкладываю демо-версию и исходные материалы данного урока. В демо-версии можете посмотреть постраничную навигацию, которую мы сейчас будем делать.
Для урока нам понадобится база данных, запущенный локальный сервер, скрипт навигации и ваше терпение.
Шаг 1. База данных
Первым делом нам нужно создать БД и пользователя. А также создать таблицу и заполнить ее информацией. В моем примере БД называется navigation, а таблица называется news.
Структуру таблицы смотрите на скриншоте ниже:

Таблица состоит из 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 "
"; echo $array["text"]; echo "
"; } 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 "
"; echo $array["text"]; echo "
"; } while($array = mysql_fetch_array($query)); ?>
Шаг 5. Выводим навигацию
В этом шаге нам нужно вывести саму навигацию, которая будет иметь вид 1 | 2 | Следующая | Последняя. Для этого в файле index.php под предыдущем кодом открываем php-теги <?php ?> и пишем внутри них такой код:
<? // Проверяем нужны ли стрелки назад if ($page != 1) $pervpage = 'Первая | Предыдущая | '; // Проверяем нужны ли стрелки вперед if ($page != $total) $nextpage = ' | Следующая | Последняя'; // Находим две ближайшие станицы с обоих краев, если они есть if($page - 5 > 0) $page5left = ' <a href=index.php?page='. ($page - 5) .'>'. ($page - 5) .' | '; if($page - 4 > 0) $page4left = ' <a href=index.php?page='. ($page - 4) .'>'. ($page - 4) .' | '; if($page - 3 > 0) $page3left = ' <a href=index.php?page='. ($page - 3) .'>'. ($page - 3) .' | '; if($page - 2 > 0) $page2left = ' <a href=index.php?page='. ($page - 2) .'>'. ($page - 2) .' | '; if($page - 1 > 0) $page1left = '<a href=index.php?page='. ($page - 1) .'>'. ($page - 1) .' | '; if($page + 5 <= $total) $page5right = ' | <a href=index.php?page='. ($page + 5) .'>'. ($page + 5) .''; if($page + 4 <= $total) $page4right = ' | <a href=index.php?page='. ($page + 4) .'>'. ($page + 4) .''; if($page + 3 <= $total) $page3right = ' | <a href=index.php?page='. ($page + 3) .'>'. ($page + 3) .''; if($page + 2 <= $total) $page2right = ' | <a href=index.php?page='. ($page + 2) .'>'. ($page + 2) .''; if($page + 1 <= $total) $page1right = ' | <a href=index.php?page='. ($page + 1) .'>'. ($page + 1) .''; // Вывод меню если страниц больше одной if ($total > 1) { Error_Reporting(E_ALL & ~E_NOTICE); echo ""; echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.''.$page. ''.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage; echo ""; } ?>
Шаг 6. Результат проделанной работы
Теперь можно все сохранить и проверить. В моем примере на страницы будут выводится по 5 записей.
На этом все, данный урок окончен. Спасибо за внимание!
Полный код всех страниц и код скрипта вы можете посмотреть в исходниках. Скачать исходники вы можете по ссылке в начале урока абсолютно бесплатно и без рекламы.
Урок для Вас подготовлен командой сайта www.red-star.pro.
- Adobe Photoshop (11)
- CMS (15)
- CSS (29)
- HTACCESS (4)
- HTML (18)
- Js / jQuery (22)
- MS Office (26)
- OS Windows (39)
- PHP / MySQL (16)
- Видео обои для Windows (7)
- Дополнения (9)
- Иконки (12)
- Интересные статьи (23)
- Обложки для AIMP (8)
- Обои для рабочего стола (8)
- Оформление Windows (11)
- ПК, ноутбуки и периферия (17)
- Программы (11)
- Шаблоны для сайтов (20)
- Исправляем ошибку «Failed to load library ‘dxva2.dll’» в Skype
- Восстановление системы Windows 7
- Форматирование жесткого диска с помощью командной строки
- Разблокировка Windows (удаление баннера)
- Сброс пароля администратора Windows 7
- Как включить виртуальную клавиатуру в Windows 7
- Как удалить пароль с документа MS Word