<?php
//
// Эта функция дописывает к чему-то что-то (в адресе)
// (упрощенный вариант)
//
function append_var($to, $what)
{
return $to."?".$what;
}
//
// Функция вывода номеров страниц - the heart of script
//
// $base_url - адрес, к которому надо цеплять start=
// $num_items - общее количество элементов
// $per_page - количество элементов на странице
// $start_item - вот тот старт, который приходит от пользователя
// $add_prevnext_text - добавлять ли ссылки "назад" и "вперед"
//
function generate_pagination($base_url, $num_items, $per_page, $start_item, $add_prevnext_text = true)
{
// Считаем, сколько всего будет страниц
$total_pages = ceil($num_items / $per_page);
$prev_string = "";
$next_string = "";
// Если одна, то нет смысла выводить номера :)
if ($total_pages == 1)
{
return "";
}
// Найдем номер текущей страницы для украшательств
// например, можно отменить ссылку для этой страницы
$curr_page = floor($start_item / $per_page);
$page_string = "";
// Проходимся циклом по всем страницам
// и формируем строку из ссылок
// ... если на итерации у нас попалась текущая страница, то сделаем так,
// чтобы она не была ссылкой (не кликалась)
for ($i = 0; $i < $total_pages; $i++)
{
if ($i != $curr_page) $page_string .= "<a href=\"".append_var($base_url, "start=".($i * $per_page))."\">".($i + 1)."</a> \n";
else $page_string .= "<a>".($curr_page + 1)."</a> \n";
}
// Если надо, добавим ссылки "назад" и "вперед"
if ($add_prevnext_text)
{
if ($curr_page > 0) $prev_string = "<a href=\"".append_var($base_url, "start=".($curr_page * $per_page - $per_page))."\"><<</a> \n";
if ($curr_page < $total_pages - 1) $next_string = "<a href=\"".append_var($base_url, "start=".($curr_page * $per_page + $per_page))."\">>></a>\n";
}
// И все это возвращаем
return "<div>\n".$prev_string.$page_string.$next_string."</div>\n";
}
// Установки для коннекта к базе
$host="localhost";
$login="root";
$pass="pass";
$dbname="db";
// Количество элементов на странице
$items_per_page = 10;
// Собсно коннект к оной
mysql_connect($host, $login, $pass) or die("Problem Database Connection");
mysql_select_db($dbname);
// Считаем, сколько всего записей в таблице
$query = "SELECT count(*) FROM table"; // Если кто знает способы посчитать записи, напишите, плиз
$res = mysql_query($query);
$total_items_count = mysql_fetch_row($res);
// Если мы открыли страничку первый раз, т.е. не кликали на ссылки...
// значит $_GET['start'] не установлен, надо исправить, и записать в него 0 (тоесть браузим сначала)
if (!isset($_GET['start'])) $_GET['start'] = 0;
// Запрос для выбора элементов
$query = "SELECT * FROM table WHERE 1 ORDER BY field LIMIT ".$_GET['start'].", ".$items_per_page;
$res = mysql_query($query);
while ($item = mysql_fetch_row($res))
{
// Вывод твоих данных
echo $item[3]."<br />\n";
}
// Вывод номеров страниц
echo generate_pagination($_SERVER['PHP_SELF'], $total_items_count[0], $items_per_page, $_GET['start'], true);
?>