Flashbacks
Новичок
Всем добрый день!
Сделал постраничный вывод результата запроса из базы:
// Запрос в базу на количество записей:
$q="SELECT count(*) FROM list";
// Результат запроса:
$result=$db_query($q);
// Количество строк в результате запроса:
$total_rows = pg_num_rows($result);
//Количество записей на странице:
$per_page=20;
//Количество страниц:
$num_pages=ceil($total_rows/$per_page);
// получаем номер страницы
if (isset($_GET['page'])) $page=($_GET['page']-1); else $page=0;
// вычисляем первый оператор для LIMIT
$start=abs($page*$per_page);
echo "Pages:  ";
for($i=1;$i<=$num_pages;$i++) {
if ($i-1 == $page) {
echo $i." ";
} else {
echo '<a href="'.$PHP_SELF.'?page='.$i.'">'.$i."</a> ";
}
}
Таким образом я получаю список страниц в виде:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
(Текущая номер страницы не является ссылкой)
Но количество страниц очень быстро заполняется с ростом базы данных, в конечном итоге кличество таких ссылок станет неприлично некрасивым.
Очень часто встречается такой вывод страниц (например на форумах):
<< < 1 2 3 4 5 ... 10 ... 23 24 25 > >>
(< и > листают по одной, << и >> - например по 10 влево-вправо).
Может у кого-то есть готовый пример как это делается, или как доработать использованный мной пример?
Сделал постраничный вывод результата запроса из базы:
// Запрос в базу на количество записей:
$q="SELECT count(*) FROM list";
// Результат запроса:
$result=$db_query($q);
// Количество строк в результате запроса:
$total_rows = pg_num_rows($result);
//Количество записей на странице:
$per_page=20;
//Количество страниц:
$num_pages=ceil($total_rows/$per_page);
// получаем номер страницы
if (isset($_GET['page'])) $page=($_GET['page']-1); else $page=0;
// вычисляем первый оператор для LIMIT
$start=abs($page*$per_page);
echo "Pages:  ";
for($i=1;$i<=$num_pages;$i++) {
if ($i-1 == $page) {
echo $i." ";
} else {
echo '<a href="'.$PHP_SELF.'?page='.$i.'">'.$i."</a> ";
}
}
Таким образом я получаю список страниц в виде:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
(Текущая номер страницы не является ссылкой)
Но количество страниц очень быстро заполняется с ростом базы данных, в конечном итоге кличество таких ссылок станет неприлично некрасивым.
Очень часто встречается такой вывод страниц (например на форумах):
<< < 1 2 3 4 5 ... 10 ... 23 24 25 > >>
(< и > листают по одной, << и >> - например по 10 влево-вправо).
Может у кого-то есть готовый пример как это делается, или как доработать использованный мной пример?