国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

理解php分頁思路方法詳解

2024-05-04 23:06:44
字體:
來源:轉載
供稿:網友

在php中分頁相對來說很是簡單的,我們只要理解到幾點就好如pagesize,count,page這幾個變量,總體多少頁,當前是第幾頁,第頁要顯示幾條記錄,我們只要一個公式可以算出來。

只需要得到兩個變量就成功了一半:每頁要顯示的記錄數$pageSize,表中總的數據量 $rowCount,有了以上兩個變量,我們就可以得出 共有幾頁了$pageCount,然后通過for循環,比如總共有13個頁面,那么很容易就能通過for循環輸出頁數,代碼如下:

  1. $nav='';//用來保存頁數的一個變量  
  2. for ($i=1;$i<=13;$i++)  
  3. {  
  4.   $nav.="<a href='index.php?page=".$i."'>第".$i."頁</a> ";  

以上的for循環將輸出如:第1頁,第2頁,第3頁,第4頁,第5頁,第6頁,第7頁,第8頁,第9頁,第10頁,第11頁,第12頁,第13頁 

如果我們只想每次只顯示十個頁面呢?比如1-10頁,11-20頁,很簡單,只要稍微修改下for循環即可實現,代碼如下:

  1. $stepfloor(($pageNow-1)/10)*10+1;  
  2. for ($i=$step;$i<=$step+10;$i++)  
  3. {  
  4.   $nav.="<a href='index.php?page=".$i."'>第".$i."頁</a> ";  

比如,當前頁面$pageNow如何在1~10之間的話,那么$step=0,當前頁面$pageNow如何在11~20之間的話,那么$step=10,當前頁面$pageNow如何在21~30之間的話,那么$step=20 ,參考具體的實現過程的代碼,我們不難發現,for循環的第二個條件只需要加上10就可以實現每次只顯示10也的情況了,我們將這一步分裝在fenyePage類中的getLink()方法中,話又說回來,如何才能得到$pageSize和$rowCount兩個變量的值呢? 

$pageSize可以由程序員自己指定,$rowCount可以借助一個簡單的執行sql語句的函數就能得到,代碼如下:

  1. <?php  
  2. /**  
  3. * $sql語句:①獲取數據②獲取總記錄數  
  4. */  
  5. class fenyePage{  
  6. public $pageSize=5;//每頁顯示的數量-->程序員指定的  
  7. public $rowCount;//這是從數據庫中獲取的(形如SELECT COUNT(id) FROM TABLE)用來保存總共有多少條記錄  
  8. public $pageNow;//通過$_GET['page']獲取的,用來保存當前所在的頁碼  
  9. public $pageCount;//計算得到的,用來保存總共有多少頁  
  10. public $res_arr;//用來保存要顯示到頁面的數據(比如保存SELECT * FROM TABLE LIMIT 0,10 檢索的數據)  
  11. public $nav;//顯示第幾頁第幾頁的導航條  
  12. /**  
  13. * 取得當前頁面的超鏈接  
  14.  
  15. * @author 小飛 2012/5/30  
  16. */  
  17. public function getLink()  
  18. {  
  19. $this->nav='';  
  20. $this->pageCount=ceil(($this->rowCount/$this->pageSize));  
  21. $stepfloor(($this->pageNow-1)/10)*10+1;  
  22. if ($this->pageNow>10)  
  23. {  
  24. $this->nav.=" <a href='index.php?page=".($step-1)."'> << </a> ";//整體每10頁向前翻  
  25. }  
  26. if ($this->pageNow!=1)  
  27. {  
  28. $this->nav.="<a href='index.php?page=".($this->pageNow-1)."'> 上一頁</a> ";  
  29. }  
  30. if ($this->pageNow!=1)  
  31. {  
  32. $this->nav.="<a href='index.php?page=1'>首頁</a> ";  
  33. }  
  34. for ($start=$step;$start<$step+10 && $start<=$this->pageCount;$start++)  
  35. {  
  36. $this->nav.="<a href='index.php?page=".$start."'>".$start."</a> ";  
  37. }  
  38. if ($this->pageNow!=$this->pageCount)  
  39. {  
  40. $this->nav.="<a href='index.php?page=".$this->pageCount."'>末頁</a> ";  
  41. }  
  42. if ($this->pageNow!=$this->pageCount)  
  43. {  
  44. $this->nav.=" <a href='index.php?page=".($this->pageNow+1)."'>下一頁</a>";  
  45. }  
  46. if ($this->pageCount>10 && $this->pageNow<$this->pageCount-8){  
  47. $this->nav.=" <a href='index.php?page=".($step+10)."'> >> </a>";//整體每10頁向后翻  
  48. }  
  49. $this->nav.="/共有".$this->pageCount."頁";  
  50. }  
  51. }  
  52. ?> 

同樣,將要顯示在頁面上的數據信息也一并付給了分頁類中的$res_arr屬性,這樣,我們就可以很容易的通過實例化一個分頁類(fenyePage),然后將其通過參數傳給showorder()函數,由該函數完成以下動作: 

①要顯示在頁面上的信息 

②表中總共有多少條記錄

總結分頁最核心的幾句代碼:

$this->pageCount=ceil(($this->rowCount/$this->pageSize)); 

$step= floor(($this->pageNow-1)/10)*10+1;

再就是sql中的select * from table where * limit 0,10,也就是本實例中的$select->limit($fenye->pageSize,($fenye->pageNow-1)*$fenye->pageSize); 了。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阜宁县| 永仁县| 祁连县| 龙里县| 手游| 科技| 辉县市| 栾城县| 化德县| 青河县| 黄山市| 兴义市| 屯昌县| 洛南县| 右玉县| 蛟河市| 乌兰县| 曲麻莱县| 乌海市| 汉中市| 寿阳县| 东明县| 滁州市| 潮安县| 大名县| 德惠市| 平度市| 鹤庆县| 萨迦县| 佛学| 河西区| 嘉义市| 黔东| 宁河县| 安岳县| 淳化县| 江阴市| 桐梓县| 饶阳县| 横峰县| 河源市|