作者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