Здесь можно найти всё что Вам нужно! ⇒

Почта techsupport@web-rubik.ru

Постраничная навигация на PHP и MySQL

Автор: © barik


Постраничная навигация для сайта, написанная на PHP и MySQL. В этом примере я расскажу, как осуществить постраничную навигацию по сайту. Простой скрипт на языке PHP и MySQL разбития информации на страницы. Если вы ищите готовое решение на PHP, то вы топали по адресу!

Для начала сам код:


<!-- ==================== Подключение к базе данных MySQL, файл db.php ==================== -->
<?php
$db = mysql_connect("localhost", "root", "1234"); // root - логин, 1234 - пароль к базе данных
mysql_select_db("test", $db); // test - имя базы данных
mysql_query("SET character_set_results = ′utf8′, 
			     character_set_client = ′utf8′, 
			     character_set_connection = ′utf8′,
			     character_set_database = ′utf8′, 
			     character_set_server = ′utf8′", $db);
?>

<!-- ==================== Код разбития на страницы содержимого из базы данных MySQL, файл index.php ==================== -->
<?php // <==================================================================================================================
// ==================================================> ------------- <======================================================
// ===============================================> © Copyright barik <=================================> Скрипт: PAGINATION
// ==================================================> ------------- <======================================================
// =========================================================================================================================
include_once("../Pagination/Manager.php"); // ===========================================================> Подключаем скрипт
include_once("../Pagination/Helper.php"); // ============================================================> Подключаем скрипт
$paginationManager = new Krugozor_Pagination_Manager(10, 3, $_REQUEST); // =========> Количество записей и пунктов номерации
$sql = "SELECT SQL_CALC_FOUND_ROWS text, date 
        FROM article 
        ORDER BY id DESC LIMIT " . $paginationManager->getStartLimit() . "," .
                                   $paginationManager->getStopLimit(); // =============> Подключаемся к таблице с содержимым
$result_list = mysql_query($sql, $db); // ============================================================> Подключаем результат
$result_found_rows = mysql_query("SELECT FOUND_ROWS() as ′count′", $db); // =====> Забираем количество всех строк из таблицы
$count = mysql_fetch_assoc($result_found_rows); // ======================================> Записываем их в переменную $count
$paginationManager->setCount($count["count"]); // ==================================> Отдаём все строки на номерацию страниц
while(($row = mysql_fetch_assoc($result_list)) !== false){ // ================================> Подключаем данные из таблицы
    $data[] = include "row.php";} // ========================================================> Записываем в переменную $data
include("template.php"); // ==================================================================> Вывод кода номерации страниц
// =========================================================================================================================
// =========================================================================================================================
// ==================================================================================================> // Скрипт: PAGINATION
// =========================================================================================================================
// =====================================================================================================================> ?>

<!-- ==================== Файл row.php ==================== -->
<?php echo "<h2>".nl2br($row[′text′])."</h2>"; ?>
<?php echo "<p>".$row[′date′]."</p>"; ?>

<!-- ==================== Шаблон template.php ==================== -->
<?php // <==================================================================================================================
// ==================================================> ------------- <======================================================
// ===============================================> © Copyright barik <==========================> Скрипт: PAGINATION ШАБЛОН
// ==================================================> ------------- <======================================================
// =========================================================================================================================
$counter = $paginationManager->getAutoincrementNum(); // ========================================================> Нумирацыя
$paginationHelper = new Krugozor_Pagination_Helper($paginationManager); // ===============================> Передача объекта
$paginationHelper->setPaginationType(Krugozor_Pagination_Helper::PAGINATION_NORMAL_TYPE) // =============> Стандартный стиль
    ->setCssNormalLinkClass("normal_link") // =============================================================> Подключение CSS
    ->setCssActiveLinkClass("active_link") // ==================================> Страница которого открыта в текущий момент
    ->setRequestUriParameter("param_1", "value_1") // ===============================> Параметр для query string гиперссылки
    ->setRequestUriParameter("param_2", "value_2") // ===============================> Параметр для query string гиперссылки
    ->setFragmentIdentifier("result1"); // ===================> Устанавливаем идентификатор фрагмента гиперссылок пагинатора
// =========================================================================================================================
// =========================================================================================================================
// ===========================================================================================> // Скрипт: PAGINATION ШАБЛОН
// =========================================================================================================================
// =====================================================================================================================> ?>

<div style="text-align:center;">
  Всего записей: <strong><?=$paginationHelper->getPagination()->getCount()?></strong>
  <?php if($paginationHelper->getPagination()->getCount()): ?>
  <br><span>Страницы:</span>
  <?=$paginationHelper->getHtml()?>
  <?php endif; ?>
</div>

<!-- ==================== CSS стили для вида кнопок, файл style.css  ==================== -->
<style type="text/css">
  .normal_link,
  .active_link{
      font-size:15px;
      border:1px solid #ccc;
      padding:3px;
  }
  .active_link{
      border:1px solid red;
  }
</style>

Теперь начнём по порядку.

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

Подключение есть, идём дальше.

Предположим у нас есть таблица article, в которой хранятся в поле text – статьи, а в поле date – дата их публикации. Естественно если статей много, их нужно вывести, к примеру, по 10 статей на каждой странице, а под статьями, мы хотим вывести по 3 ссылки на следующие страницы.

Скачиваем внизу исходники, создаёте нужную нам директорию, к примеру – articles и помещаем туда скаченную папку с файлами – Pagination. Директория будет выглядеть где то так:

Articles/
--Pagination/
------Helper.php
------Manager.php
--index.php
--db.php
--row.php
--template.php


В файле index.php укажем подключение к остальным файлам:

include_once("db.php")
include_once("Pagination/Manager.php")
include_once("Pagination/Helper.php")


Строка отвечающая за вывод количества статей будет выглядеть так:
$paginationManager = new Krugozor_Pagination_Manager(10, 3, $_REQUEST)

Полученные данные из таблицы article сохраним в переменной $data:
$data[] = include "row.php"


И подключим шабон template.php:
include("template.php")


В скрипте я прокомментировал все действия, в исходниках полностью рабочий пример.
Основная информация была взята на официальном сайте разработчика навигации pagination
Если что-то не понятно – пишите в комментариях...




Комментариев нет или


Оставить комментарий

Оставленные комментарии проверяются технической частью интернет портала Web-rubik.ru



←−−−