實例示範簡易通用的PHP分頁類

WBOY
發布: 2016-07-25 09:12:11
原創
884 人瀏覽過
} ?>
詳細範例網址:http://www.alleyloft.com/contents/share?id=3 實例示範簡易通用的PHP分頁類
  1. /***********************************************
  2. * @類別名稱: page
  3. * @參數: $myde_total - 總記錄數
  4. * $myde_size - 一頁顯示的記錄數
  5. * $myde_page - 目前頁
  6. * $myde_url - 取得目前的url
  7. * @功能: 分頁實現
  8. * @作者: 宋海閣
  9. */
  10. class page {
  11. private $myde_total; //總記錄數
  12. private $myde_size ; //一頁顯示的記錄數
  13. private $myde_page; //目前頁
  14. private $myde_page_count; //總頁數
  15. private $myde_i; //起頭頁數
  16. private $myde_en ; //結尾頁數
  17. private $myde_url; //取得目前的url
  18. /*
  19. * $show_pages
  20. * 頁面顯示的格式,顯示連結的頁數為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( $ this->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. private function page_replace($page){
  61. return str_replace("{page}",$page,$this->myde_url);
  62. }
  63. //首頁
  64. private function myde_home_home () {
  65. if($this->myde_page!=1){
  66. return "page_replace(1)."" title="首頁">首頁 a> ";
  67. }else{
  68. return "

    首頁

    ";
  69. }
  70. }
  71. //上一頁
  72. private function 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. private function 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. private function 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= '頁'){
  97. $str ="
    ";
  98. $str.=$this->myde_home();
  99. $str .=$this- >myde_prev();
  100. if($this->myde_i>1){
  101. $str.="

    ... p>";

  102. }
  103. for($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;
  • }
  • }
  • ?>
  • 複製程式碼
    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分頁類別
    if($total>$showrow){//總記錄數大於每頁顯示數,顯示分頁 $page = new page($total,$showrow,$curpage,$url ,2);
    echo $page->myde_write();

    複製程式碼
    來源:php.cn
    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
    熱門教學
    更多>
    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板