
30.09.2008, 12:56
|
|
Постоянный
Регистрация: 07.06.2006
Сообщений: 556
Провел на форуме: 7549607
Репутация:
2702
|
|
Как реализовать постраничный вывод? mysql+php
Из моего движка:
PHP код:
function pager($page, $pages, $pg) { # Build pagination
$res = ' <table border=0 class=row1 width=370 cellspacing=0 cellpadding=0><tr><td align=right><br><b>Pages: </b>';
$numpag = (int)($pages);
if ($numpag < $pages) {$numpag++;}
if ($numpag == 0) {$numpag = 1;}
$currp = (int)($pg);
$res .= ($pg <= 1) ? '<b><font color=#AAAAAA>«</font></b> ' : '<a href="?page='.$page.'&pg='.($currp-1).'">«</a> ';
if ($numpag <= 10)
{
for ($i=1; $i<=$numpag; $i++)
{
$res .= (($i <= $pg) && ($i >= $pg)) ? '<b><font color=#000000>['.$i.']</font></b> ' : '<a href="?page='.$page.'&pg='.$i.'">'.$i.'</a> ';
}
}
else
{
$showpag = 10;
$st = $currp-4;
if ($st < 1) {$st = 1;}
if ($st > 2)
{
$res.=' <a href="?page='.$page.'&pg=1">1</a> <b><font color=#AAAAAA>...</font></b>';
$showpag-=2;
}
else if ($currp > 5)
{
$res.=' <a href="?page='.$page.'&pg=1">1</a> ';
$showpag-=1;
}
if ($st+$showpag > $numpag) {$st = $numpag-$showpag;}
for ($i=$st; $i<=$st+$showpag; $i++)
{
$res.= (($i <= $pg) && ($i >= $pg)) ? ' <b><font color=#000000>['.$i.']</font></b> ' : ' <a href="?page='.$page.'&pg='.$i.'">'.$i.'</a> ';
}
if ($st < ($numpag-$showpag)-1) {$res.=' <b><font color=#AAAAAA>...</font></b> <a href="?page='.$page.'&pg='.$numpag.'">'.$numpag.'</a> ';}
else if (($currp <= $numpag-5)&&($numpag>$showpag+1)) {$res.=' <a href="?page='.$page.'&pg='.$numpag.'">'.$numpag.'</a> ';}
}
$res .= ($pg >= ($pages)) ? '<b><font color=#AAAAAA>»</font></b> ' : '<a href="?page='.$page.'&pg='.($currp+1).'">»</a></td>';
return $res; }
$page - имя страницы (?page= $page)
$pages - Кол-во страниц.
$pg - текущая страница (?page=$page&pg= $pg)
Пример вызова: echo pager('news',30,15);
Получается нечто подобное:
Pages: « 1 ... 11 12 13 14 [15] 16 17 18 19 ... 30 »
|
|
|