PHP最简单的分页公式

写网站的时候经常会用到分页,如果自己写分页可能会被分页这个看似简单的东西搞的头大。

举个例子,我这个博客如果用普通模式看的话,首页大概有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请留言给我



文章来自: 本站原创
Tags:
评论: 0 | 查看次数: 5006