我有一个 MySQL 表,里面有很多我想让用户访问的记录。我不想将整个表转储到页面,所以我需要一次将它分成 25 条记录,所以我需要一个页面索引。您可能已经在其他页面上看到过这些,它们在页面底部看起来像这样:
< 1 2 3 4 5 6 7 8 9 >
例如,当用户单击“4”链接时,页面会刷新并且偏移量会继续移动(第 4 页 x 25 条记录)。这是我已经拥有的:
function CreatePageIndex($ItemsPerPage, $TotalNumberOfItems, $CurrentOffset, $URL, $URLArguments = array())
{
foreach($URLArguments as $Key => $Value)
{
if($FirstIndexDone == false)
{
$URL .= sprintf("?%s=%s", $Key, $Value);
$FirstIndexDone = true;
}
else
{
$URL .= sprintf("&%s=%s", $Key, $Value);
}
}
Print("<div id=\"ResultsNavigation\">");
Print("Page: ");
Print("<span class=\"Links\">");
$NumberOfPages = ceil($TotalNumberOfItems / $ItemsPerPage);
for($x = 0; $x < $NumberOfPages; $x++)
{
if($x == $CurrentOffset / $ItemsPerPage)
{
Print("<span class=\"Selected\">".($x + 1)." </span>");
}
else
{
if(empty($URLArguments))
{
Print("<a href=\"".$URL."?Offset=".$x * $ItemsPerPage."\">".($x + 1)."</a> ");
}
else
{
Print("<a href=\"".$URL."&Offset=".$x * $ItemsPerPage."\">".($x + 1)."</a> ");
}
}
}
Print("</span>");
Print(" (".$TotalNumberOfItems." results)");
Print("</div>");
}
显然,这段代码不会创建动态索引,它只是将整个索引转储到每个可用页面的页面底部。我需要的是一个动态的解决方案,它只显示前 5 页和后 5 页(如果存在)以及 >> 或向前移动 5 页左右的内容。
任何人都看到了一种优雅且可重复使用的实现方式,因为我觉得我正在重新发明轮子?任何帮助表示赞赏。