Я уже писал свой вариант навигатора для чего-то, он поизящнее. Если на забуду - причешу для дискуссий и выложу.
Причесал. Даже проверил
. Выкладываю.
function disc_getNavigation($list,$productID)
{
define(DISC2PAGE, 3); // Messages limit on page
$messages = db_fetch_assoc(db_query("SELECT count(*) AS count FROM ".DISCUSSIONS_TABLE." WHERE productID=".$productID));
if ($messages['count'] > DISC2PAGE)
{
$pagecount = ceil($messages['count']/DISC2PAGE);
$list = max((int)$list,1);
$start = DISC2PAGE*($list-1);
$url = "product_".$productID.".html&discuss=yes";
$firstPage = "<a href='".$url."'><<<</a>  ";
$nav = "<br><center>";
if ($list == 1) $nav .= "<span style='color:grey'><<< <<</span>";
elseif ($list == 2) $nav .= $firstPage."<a href='".$url."'><<</a>";
else $nav .= $firstPage."<a href='".$url."&list=".($list-1)."'><<</a>";
$nav .= "  ";
$n = 1;
for ($i=0; $i<$messages['count']; $i+=DISC2PAGE)
{
$nav .= ($i==$start)?("<b>".$n++."</b>")"<a href='".$url.($n>1?("&list=".$n):"")."'>".$n++."</a>");
$nav .= "  ";
}
if ($list == $pagecount) $nav .= "<span style='color:grey'>>> >>></span>";
else $nav .= "<a href='".$url."&list=".($list+1)."'>>></a> <a href='".$url."&list=".$pagecount."'>>>></a>";
$nav .= "</center><br>";
return array($nav,$start,DISC2PAGE);
}
return array("",0,DISC2PAGE);
}
функцию all_getNavigation переделываем аналогичным образом.
PS. Навигатор будет чуть другой.
1. ссылки на первую и предыдущую страницы на первой странице дизаблятся (серенькие), а не пропадают. Аналогично и на последней странице для следующей/последней.
2. выводится список ВСЕХ страниц, а не текущая плюс-минус две.