|
|
|
|
|
для: samb100
(29.06.2009 в 05:39)
| |
<?php
// Постраничная навигация;
function pager($all, $page, $a = 20, $b = 5) {
// Количество записей на странице;
$page_count = $a;
// Общее число страниц
$page_total = intval((count($all)-1)/$page_count)+1;
// ;
if (empty($page) or $page < 0) $page = 1;
if ($page > $page_total) $page = $page_total;
// ;
$m = $b;
$n = floor($m/2);
// ;
if ($m < $page_total) {
if ($page <= $n) {
for ($i=1; $i<=$m; $i++)
$pager['pages'][] = $i;
} elseif ($page > ($page_total-$n)) {
for ($i=($page_total-$m+1); $i<=$page_total; $i++)
$pager['pages'][] = $i;
} else {
for ($i=($page-$n); $i<=($page+$n); $i++)
$pager['pages'][] = $i;
}
} else {
for ($i=(1); $i<=($page_total); $i++)
$pager['pages'][] = $i;
}
// ;
$page_start = $page * $page_count - $page_count;
// ;
$pager['current'] = $page;
$pager['total'] = $page_total;
$pager['start'] = $page_start;
$pager['count'] = $page_count;
// ;
return $pager;
}
?>
|
Передаете в функцию pager нужный массив и она сама вернет нужный результат. Переменные $a и $b - количество записей на странице и количество страниц.
Например:
$news = запрос в БД (содержи все записи)
$news = pager($news, $_GET['page']);
Навигация:
$pager['start'] - первая страница
$pager['total'] - последняя страница
$pager['pages'] - массив номеров страниц (вывод циклом)
$pager['current'] - текущая страница | |
|
|
|
|
|
|
|
для: samb100
(29.06.2009 в 05:39)
| | патсталом!!! когда вы код оформлять научитесь???
вот ваш код в нормальном оформлении, разве не лучше выглядет??::
<?
$p = 1;
do{
if ($page == $p) echo '<a href=cat.php?id_categ='.$id_categ.'&page='.$p.'><b><font size=4>'.$p.'</font></b></a>'."\n";
else echo '<a href=cat.php?id_categ='.$id_categ.'&page='.$p.'>'.$p.'</a>'."\n";
$p++;
}while ($p <= $total);
|
| |
|
|
|
|
|
|
|
| Есть такой код для постраничного вывода:
$p = 1;
do {
if ($page == $p)
{ echo "<a href=cat.php?id_categ=$id_categ&page=$p><b><font size=4>$p</font></b></a>\n";
}
else
{ echo "<a href=cat.php?id_categ=$id_categ&page=$p>$p</a>\n";
}
$p++;
}
while ($p <= $total);
|
где
// $page - это $_GET['page']
// $total - общее число записей в БД
Чтобы сделать постраничный вывод я делю общее количество записей в БД на желаемое количество записей
на одной странице и получаю число страниц. Далее с помощью формулы и LIMIT делаю постраничный вывод на страницы.
Всё это работает нормально.
Но скоро на сайте будет более 100 страниц, поэтому надо как-то ограничить число страниц на одной странице (сорри за тафтологию),
т.е. сначала выводятся 5 страниц, затем кликая на ">>" выводятся следующие 5 страниц и так далее,
пока не закончатся все страницы на сайте.
Как такое сделать?
Более наглядно это видно на скриншоте: http://mir44.ru/tmp/page.gif | |
|
|
|
|