PHP最简单的分页公式
作者:admin 日期:2014-06-24
写网站的时候经常会用到分页,如果自己写分页可能会被分页这个看似简单的东西搞的头大。
举个例子,我这个博客如果用普通模式看的话,首页大概有40多页的分页,现在有这样的需求:
“不管现在在哪一页,总是显示前后共10页,当前页尽可能居中。如果总数不满10页,则全部显示。前后如果超出则向后或向前递推。”
在我博客上(我博客总是显示9页)表现的就是。
这个看似简单的功能,在逻辑上还是有点复杂的。
特殊情况1:
当前在第一页,显示的就是1~10页,而不是-3~6,也不是1~6
特殊情况2:
假设共有100页,当前在第100页。那就应该显示91~100,不是96~105,也不是96~100。
特殊情况3:
当前共5页,那么,不管现在是第几页,则都应该显示1~5。
如果分别考虑这三种情况写起来会很麻烦,所以我给出一小段代码来计算开始页码和结束页码。如下:
$b = $this->_page + round($this->_size / 2); $a = $b + 1 - $this->_size; $min = 1; $max = $pageCount; echo "a: $a \r\n"; echo "b: $b \r\n"; echo "min: $min \r\n"; echo "max: $max \r\n"; // 主要是下面的两行 $start = max($a - min(0, $a - $min) + min(0, $max - $b), $min); $end = min($b + min(0, $max - $b) - min(0, $a - $min), $max); for ($i=$start; $i<=$end; $i++) { echo $i, "\r\n"; }
如果发现有什么问题或者代码有bug请留言给我
评论: 0 | 查看次数: 5006