[英]Add Ellipsis in PHP Pagination
.
//Prev
.
for($number = 1; $number <= $num_pages; $number++)
{
if($page == $number)
{
$navigator .= "<b>[$number]</b> ";
}
else
{
$navigator .= "<a href='?c=".$_SESSION['cID']".&rows=".$per_page."&page=$number'>$number</a> ";
}
}
.
//Next
.
This is the snippet that prints number of pages. 这是打印页数的片段。
Sample output: 样本输出:
Previous 1 2 3 4 [5] 6 7 8 9 10 Next 上一页1 2 3 4 [5] 6 7 8 9 10下一步
5 is the current page. 5是当前页面。
Problem: page numbers are shown in sequence with no restrictions. 问题:页码按顺序显示,没有任何限制。 If i have 100 pages, all numbers show up.
如果我有100页,则会显示所有数字。
Question: I need my paging numbers appear as the following... 问题:我需要将我的分页号码显示如下...
Assume we only have 7 ($num_pages) pages: 假设我们只有7个($ num_pages)页面:
Previous 1 2 [3] 4 5 6 7 Next 上一页1 2 [3] 4 5 6 7下一页
Assume we have 90 pages: 假设我们有90页:
[1] 2 3 4 5 6 7 ... 90 Next [1] 2 3 4 5 6 7 ... 90下一步
Assume user clicked the 7th page: 假设用户点击了第7页:
Previous 1 ... 5 6 [7] 8 9 10 11 ... 90 Next 上一页1 ... 5 6 [7] 8 9 10 11 ... 90下一步
Assume user clicked 11th page: 假设用户点击了第11页:
Previous 1 ... 9 10 [11] 12 13 14 15 ... 90 Next 上一页1 ... 9 10 [11] 12 13 14 15 ... 90下一页
Assume user clicked 15th page: 假设用户点击了第15页:
Previous 1 ... 13 14 [15] 16 17 18 19 ... 90 Next 上一页1 ... 13 14 [15] 16 17 18 19 ... 90下一页
Assume user clicked 90th page: 假设用户点击了第90页:
Previous 1 ... 84 85 86 87 88 89 [90] 上一页1 ... 84 85 86 87 88 89 [90]
Any help will be appreciated. 任何帮助将不胜感激。
$radius = 3;
for($i = 1; $i <= $total; $i++){
if(($i >= 1 && $i <= $radius) || ($i > $current - $radius && $i < $current + $radius) || ($i <= $total && $i > $total - $radius)){
if($i == $current) echo "<b>".$i."</b>";
}
elseif($i == $current - $radius || $i == $current + $radius) {
echo "... ";
}
}
This should be more than enough to get you started at least 这应该足以让你至少开始
$count = 7; // number to show
// start at half threshold down from the current location.
$number = $current - round($count/2);
if( $number > 1 ) echo '...';
else $ // increase to have number start at 1.
for( $number; $number < $number + $count; $number++)
{
// your for loop as normal
}
if( $number < $total ) echo '...';
An elegant solution for this kind of thing is to use "logarithmic page navigation". 对于这种事情的优雅解决方案是使用“对数页面导航”。 See my answer to this question (PHP code included):
请参阅我对此问题的回答(包括PHP代码):
How to do page navigation for many, many pages? 如何为许多页面进行页面导航? Logarithmic page navigation
对数页面导航
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.