PHP簡單分頁如何省幾個數字?

來源:互聯網
上載者:User
這是我寫的PHP簡單分頁 正常輸出 1234567 沒有問題,但是 要是100多頁, 怎樣在 12345....100 省略中間 多個數字呢?

                              ">上一頁                '.$i.'';          } else {            echo "".$i."";          }              }           if ($page<$pagenum) { //如果page小於總頁數,顯示下一頁連結         ?>               ">下一頁              

原效果: 上一頁 123456 下一頁
要是100個頁面 變成: 上一頁 123456.......100 下一頁

回複內容:

這是我寫的PHP簡單分頁 正常輸出 1234567 沒有問題,但是 要是100多頁, 怎樣在 12345....100 省略中間 多個數字呢?

                              ">上一頁                '.$i.'';          } else {            echo "".$i."";          }              }           if ($page<$pagenum) { //如果page小於總頁數,顯示下一頁連結         ?>               ">下一頁              

原效果: 上一頁 123456 下一頁
要是100個頁面 變成: 上一頁 123456.......100 下一頁

涉及到這種變數較多的需求,可以先裡清楚:哪些變數在一定條件是是不變的,而哪一些又是動態變化的。為了把問題說清楚,下面類比定義幾個涉及到分頁的變數:

$total 總記錄數$pagesize 每頁的記錄數$pagenum 總頁碼數$page 當前頁$bothnum 當前頁碼兩邊顯示的頁碼數量

好了,對於分頁,涉及到變數就這麼幾個。為瞭解決這個問題,我們先固定住幾個變數,如下

$total = 100;$pagesize = 10;$pagenum = $total / $pagesize = 10;$bothnum = 5; //表示當前頁碼兩邊顯示 5 個頁碼數量

因此,實際上目前就只有一個變數了就是 $page 表示當前頁,所以在組裝分頁格式的時候,你只要關注 $page 參數的變化就可以了。

為了方便理解,我們準備把組裝的分頁資訊都儲存到一個字串 $pagestr 中。好了準備工作已經完畢,下面就開始製作分頁吧~~。

  1. 上一頁

       if($page == 1) {       $pagestr .= '上一頁';   } else {       $pagestr .= '上一頁'   }
  2. 中間的數字頁碼

       // 想象分頁如下,目前第 10 頁,它兩邊最多隻有 5 (bothnum) 個數字   1 ... 5 6 7 8 9 *10* 11 12 13 14 15 ... 100
    • 首頁(第 1 頁)

      if(($page - $bothnum) > 1) {    $pagestr .= '';    $pagestr .= '...';}
    • 當前頁的左邊

        for($i=$bothnum; $i>=1; $i--) {     if(($page - $i) < 1 ) { // 當前頁左邊花最多 bothnum 個數字         continue;     }     $pagestr .= ''; }
    • 當前頁

       $pagestr .= ''.$page.''; 
    • 當前頁的右邊

      for($i=1; $i<=$bothnum; $i++) {    if(($page + $i) > $pagenum) { // 當前頁右邊最多 bothnum 個數字        break;    }    $pagestr .= '';}
    • 尾頁(第 100 頁)

      if(($page + $bothnum) < $pagenum) {    $pagestr .= '...';    $pagestr .= '';}
  3. 下一頁

       if($page == $pagenum) {       $pagestr .= '下一頁';   } else {       $pagestr .= '下一頁'   }

原理就基本差不多是這樣,其實這是對製作分頁時思路的一種整理,上面的代碼並沒有經過測試,可以自己調試一下。

當然了,你也可以把它封裝稱為一個分頁類,如果搞掂,也希望能夠分享出來吧。

最後,實際上,還有比如並沒有對分頁參數進行處理,這個需要自己去做,只要把一些額外參數拼接上了就可以了,比較簡單。

你要先定義一個$limitPage,比如為10,最多顯示10頁。
那你的迴圈裡面就不能用$pagenum,你要先比較和$limitPage的大小,然後選擇來迴圈輸出。多的就有省略符號,和輸出最後一頁。
這裡面有很多情況要考慮,總頁面數為0,總頁面數小於等於$limitPage,總頁面數大於$limitPage。
當前頁面數和剩餘頁面數跟$limitPage的比較。細節比較多,好好理一下。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.