我正在寻找一个“高级”php分页脚本,每页显示10个mysql条目。在网络上有许多“简单”脚本(即使使用jQuery),如下所示:http://www.9lessons.info/2009/09/pagination-with-jquery-mysql-and-php.html 这是一个演示:http://demos.9lessons.info/pagination.php
这些简单的脚本在拥有数百个条目时很糟糕......所以我需要的是一个高级脚本 - 我需要这样的东西:
当你在第1页时它应该是这样的:
[1] 2 3 4 5 ... 45
在第8页:
1 ... 6 7 [8] 9 10 ... 45
在第43页:
1 ... 41 42 [43] 44 45
依旧......
许多论坛或博客(例如wordpress)都在使用这种技术。有人可以提供代码吗?必须有一个“最佳实践代码”,但我找不到它。 谢谢!
答案 0 :(得分:5)
试试这个,
function generatePagination($currentPage, $totalPages, $pageLinks = 5)
{
if ($totalPages <= 1)
{
return NULL;
}
$html = '<ul class="pagination">';
$leeway = floor($pageLinks / 2);
$firstPage = $currentPage - $leeway;
$lastPage = $currentPage + $leeway;
if ($firstPage < 1)
{
$lastPage += 1 - $firstPage;
$firstPage = 1;
}
if ($lastPage > $totalPages)
{
$firstPage -= $lastPage - $totalPages;
$lastPage = $totalPages;
}
if ($firstPage < 1)
{
$firstPage = 1;
}
if ($firstPage != 1)
{
$html .= '<li class="first"><a href="./?p=1" title="Page 1">1</a></li>';
$html .= '<li class="page dots"><span>...</span></li>';
}
for ($i = $firstPage; $i <= $lastPage; $i++)
{
if ($i == $currentPage)
{
$html .= '<li class="page current"><span>' . $i . '</span></li>';
}
else
{
$html .= '<li class="page"><a href="./?p=' . $i . '" title="Page ' . $i . '">' . $i . '</a></li>';
}
}
if ($lastPage != $totalPages)
{
$html .= '<li class="page dots"><span>...</span></li>';
$html .= '<li class="last"><a href="./?p=' . $totalPages . '" title="Page ' . $totalPages . '">' . $totalPages . '</a></li>';
}
$html .= '</ul>';
return $html;
}
答案 1 :(得分:1)
如果你真的有100页的结果,你可能想要以对数方式考虑分页 有关详细信息,请参阅this post。
答案 2 :(得分:0)
查看 this 插件(jquery)
分页符与你想要的有点不同,但它会完成你所需要的一切。
答案 3 :(得分:0)