首頁  >  文章  >  後端開發  >  不錯的php mysql分頁類

不錯的php mysql分頁類

WBOY
WBOY原創
2016-07-25 08:52:45771瀏覽
  1. /*****************************
  2. * @類別名稱: page
  3. * @參數: $myde_total - 總記錄數
  4. * $myde_size - 一頁顯示的記錄數
  5. * $myde_page - 目前頁
  6. * $myde_url - 取得目前的url
  7. * @功能: 分頁實作
  8. * @作者: 宋海閣
  9. * @功能: 分頁實作
  10. * @作者: 宋海閣
  11. * @功能: 分頁實作
  12. * @作者: 宋海閣
  13. * @功能: 分頁實作
  14. * @作者: 宋海閣
  15. */
  16. class page {
  17. private $myde_total; //總記錄數
  18. private $myde_size; //一頁顯示的記錄數
  19. private $myde_page; //目前頁
  20. private $myde_page_count; //總頁數private $myde_i; //起頭頁數 private $myde_en; //結尾頁數private $myde_url;//取得目前的url/* * $show_pages * 頁面顯示的格式,顯示連結的頁數為2* $show_pages 1。
  21. * 如$show_pages=2那麼頁面上顯示就是[首頁] [上頁] 1 2 3 4 5 [下頁] [尾頁]
  22. */
  23. private $show_pages;
  24. 公用函數__construct($myde_total=1,$myde_size=1,$myde_page=1,$myde_url,$show_pages=2){
  25. $this->myde_total = $this->numeric($myde_total) ;
  26. $this->myde_size = $this->numeric($myde_size);
  27. $this->myde_page = $this->numeric($myde_page);
  28. $this-> ;myde_page_count = ceil( $這個->myde_total/$this->myde_size);
  29. $this->myde_url = $myde_url;
  30. if($this->myde_totalmyde_total=0;
  31. if ( $this->myde_pagemyde_page=1;
  32. if($this->myde_page_countmyde_page_count= 1;
  33. if($this->myde_page>$ this ->myde_page_count) $this->myde_page=$this->myde_page_count;
  34. $this->limit = ($this-> ;myde_page-1)*$this->myde_size;
  35. $this-> myde_i =$this->myde_page-$show_pages;
  36. $this->myde_en=$this->myde_page $ show_pages;
  37. if($this->myde_i $this->myde_en = $this->myde_en (1-$this->myde_i);
  38. $this->myde_i=1;
  39. }
  40. if($this->myde_en>$this->myde_page_count){
  41. $this->myde_i = $this->myde_i-($this ->myde_en-$this->myde_page_count);
  42. $this->myde_en=$this->myde_page_count;
  43. }
  44. if ($this->myde_imyde_i=1;
  45. }
  46. //偵測是否為數字
  47. private function numeric($num){
  48. if(strlen($ num) )){
  49. if(!preg_match ("/^[0-9] $/",$num)){
  50. $num=1;
  51. }else{
  52. $num = substr( $num,0,11);
  53. }
  54. }else{
  55. $num=1;
  56. }
  57. return $num;
  58. }
  59. //位址替換
  60. 牛皮函數page_replace($page){
  61. return str_replace("{page}",$page,$this->myde_url);
  62. }
  63. //首頁
  64. 牛皮函數myde_home( ){
  65. if($this-> ;myde_page!=1){
  66. return "page_replace(1)."" title="首頁">首頁 a> ";
  67. }else{
  68. return "

    首頁

    ";
  69. }
  70. }
  71. //上一頁
  72. 初始化函數myde_prev(){
  73. if( $this->myde_page!=1){
  74. return "page_replace($this->myde_page-1)."" title="上一頁" >上一頁";
  75. }else{
  76. return "

    上一頁

    ";
  77. }
  78. }
  79. //下一頁
  80. 私人函數myde_next(){
  81. if($this->myde_page!=$this->myde_page_count){
  82. return " ;page_replace($this- >myde_page 1)."" title="下一頁">下一頁";
  83. }else{
  84. 返回"

    下一頁

    ";
  85. }
  86. }
  87. //尾頁
  88. 私人函數myde_last(){
  89. if($this->myde_page!=$this->myde_page_count){
  90. return "page_replace($this->myde_page_count)."" title="尾頁">尾頁";
  91. }else{
  92. return "

    尾頁

    ";
  93. }
  94. }
  95. //輸出
  96. public function myde_write($id='page ') {
  97. $str ="
    ";
  98. $str.=$this->myde_home();
  99. $str.= $this->myde_prev ();
  100. if($this->myde_i>1){
  101. $str.="

    ...

    ";
  102. }
  103. 對於($i=$this->myde_i;$imyde_en;$i ){
  104. if($i==$this->myde_page){
  105. $str.="page_replace($i)."" title="第".$i."頁" class="cur"> ;$i";
  106. }else{
  107. $str.="page_replace($i)."" title="第".$i."頁">$i";
  108. }
  109. }
  110. if( $this->myde_enmyde_page_count ){
  111. $str. ="

    ...

    ";
  112. }
  113. $str.=$this->myde_next();
  114. $str.=$ this->myde_last ();
  115. $str.="

    ".$this->myde_page_count.

  116. "
  117. ".$this->myde_total ."條資料

    ";
  118. $str.="
";
  • return $str;
  • }
  • }
  • ?>
  • 複製程式碼

    php mysql 分頁原理:limit ($curpage-1)*$showrow,$showrow

    2,php展示頁面程式碼

    1. require_once('./page.class.php'); //分頁類別
    2. $showrow = 3;/ /一頁顯示的行數
    3. $curpage = empty($_GET['page'])?1:$_GET['page'];//目前的頁,也應該處理非數字的情況
    4. $url = "?page={page}";//分頁位址,如果有檢索條件="?page={page}&q=".$_GET['q']
    5. //省略了連結mysql的程式碼,測試時自行加
    6. $sql = "SELECT * FROM table";
    7. $query = mysql_query($sql);
    8. $total = mysql_num_rows($query);//記錄總條數
    9. if(!empty($_GET['page']) && $total !=0 && $curpage > ceil($total/$showrow))
    10. $curpage = ceil($total_rows/$showrow);/ /目前頁數大於最後頁數,取最後一頁
    11. //取得資料
    12. $get_data = "select * from table limit ".($curpage-1)*$showrow.",$showrow;" ;
    13. ...
    14. ?>
    15. 簡易通用的PHP分頁類-bbs.it-home.org
  • if($total>$showrow){//總記錄數大於每頁顯示數,顯示分頁
  • $page = new page($total ,$showrow,$curpage,$url,2); echo $page->myde_write();
  • }?>
    複製程式碼


    陳述:
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn