作者fleaking (香草天空)
看板PHP
标题[请益] PHP的Pagination写法
时间Wed Sep 12 15:14:47 2012
想请教一下各位大大,
我用php写了一个mysql_query的功能,
将每10笔得到的结果分为一页.
结果有些query跑出非常多资料(例如一千笔),
因此产生一百多个分页连结
[1][2][3][4][5][6][7][8][9][10][11][12][13]....blah blah
我想让所有的query结果分页(Pagination)像Google那样最多只显示10页,
例如我在第一页的时候是 [1][2][3][4][5][6][7][8][9][10]
点第七页时 [2][3][4][5][6][7][8][9][10][11]
第八页时 [3][4][5][6][7][8][9][10][11][12]
之後依此类推,
我的原始码是这样:
for($i = 1; $i <= $total_pages; $i++){
if(($page) == $i){
$pagination .= $i;
} else {
$pagination .= '< a href="index.php?page='.$i.'">'.$i.'</a>';}
}
在网路上找到一个范例,
将第一行改成
for($i = max(1, $page - 5); $i <= min($page + 5, $total_pages); $i++){
结果在第一页时会变成
[1][2][3][4][5][6] (六个)
第二页变成
[1][2][3][4][5][6][7] (七个)
.....
一直到第五页才变成我想要的十个
[1][2][3][4][5][6][7][8][9][10]
第六页却变成十一个
[1][2][3][4][5][6][7][8][9][10][11]
在一个有十一页结果的pagination中,
进入第十一页後却又变成六个
[6][7][8][9][10][11]
想请教各位高手, 我那第一行要改成怎样,
才能使每一页都维持10个页面连结?
感恩....
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 175.180.183.217
1F:推 LPH66:首先 应该是 -5 跟 +4 才是 10 个连结 (如你第七页的例子) 09/12 15:30
2F:→ LPH66:再来要能保证至少十页的话 另外用两个变数把范围先存起来 09/12 15:30
3F:→ LPH66:再去判断现在是不是在第五页前或倒数第四页之後调整 09/12 15:31
4F:推 rocairforce:我比较想知道,你已经决定最多十页,一页十笔 09/12 16:35
5F:→ rocairforce:怎麽还会捞出一千多笔资料 = = 09/12 16:36
6F:→ kerash:页数跟笔数无关啊,limit 30 跟 query 出 row 的列数不一样 09/12 17:57
7F:推 liaosankai:试着用PEAR的Pager套件去实做分页吧 09/12 20:24
8F:→ chenstin:咦?原PO想要的功能 是往後点後就回不到前面的分页? 09/12 23:06
9F:→ MOONRAKER:1)检查有没有10页 09/13 01:34
10F:→ MOONRAKER:2)有=>throw exception 09/13 01:34
11F:→ MOONRAKER:3)接到exception时补满10页 好我真是无聊… 09/13 01:35