[請益] PHP的Pagination寫法

看板PHP作者 (香草天空)時間11年前 (2012/09/12 15:14), 編輯推噓3(308)
留言11則, 6人參與, 最新討論串1/1
想請教一下各位大大, 我用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

09/12 15:30, , 1F
首先 應該是 -5 跟 +4 才是 10 個連結 (如你第七頁的例子)
09/12 15:30, 1F

09/12 15:30, , 2F
再來要能保證至少十頁的話 另外用兩個變數把範圍先存起來
09/12 15:30, 2F

09/12 15:31, , 3F
再去判斷現在是不是在第五頁前或倒數第四頁之後調整
09/12 15:31, 3F

09/12 16:35, , 4F
我比較想知道,你已經決定最多十頁,一頁十筆
09/12 16:35, 4F

09/12 16:36, , 5F
怎麼還會撈出一千多筆資料 = =
09/12 16:36, 5F

09/12 17:57, , 6F
頁數跟筆數無關啊,limit 30 跟 query 出 row 的列數不一樣
09/12 17:57, 6F

09/12 20:24, , 7F
試著用PEAR的Pager套件去實做分頁吧
09/12 20:24, 7F

09/12 23:06, , 8F
咦?原PO想要的功能 是往後點後就回不到前面的分頁?
09/12 23:06, 8F

09/13 01:34, , 9F
1)檢查有沒有10頁
09/13 01:34, 9F

09/13 01:34, , 10F
2)有=>throw exception
09/13 01:34, 10F

09/13 01:35, , 11F
3)接到exception時補滿10頁 好我真是無聊…
09/13 01:35, 11F
文章代碼(AID): #1GK3PhEr (PHP)