ホームページ  >  記事  >  バックエンド開発  >  素敵なphp+mysqlページングクラス

素敵なphp+mysqlページングクラス

WBOY
WBOYオリジナル
2016-07-25 08:52:45721ブラウズ
  1. /******************************
  2. * @クラス名: page
  3. * @パラメータ: $myde_total - レコードの総数
  4. * $myde_size - 1ページに表示されるレコード数
  5. * $myde_page - 現在のページ
  6. * $myde_url - 現在のURLを取得
  7. * @Function: ページング実装
  8. * @Author: Song Haige
  9. */
  10. class page {
  11. private $myde_total; //総レコード数
  12. private $myde_size //1ページに表示されるレコード数
  13. private $ myde_page; //現在のページ
  14. private $myde_page_count; //総ページ数
  15. private $myde_en //現在のページの数
  16. を取得
  17. /*
  18. * $show_pages
  19. * ページの表示形式、リンクを表示するページ数は 2*$show_pages+1 です。
  20. * 如$show_pages=2那么页面上显示是[首页] [上页] 1 2 3 4 5 [下页] [尾页]
  21. */
  22. private $show_pages;
  23. public function __construct($myde_total=1) ,$myde_size=1,$myde_page=1,$myde_url,$show_pages=2){
  24. $this->gt;myde_total = $this->numeric($myde_total);
  25. $this->myde_size = $this- >numeric($myde_size);
  26. $this->myde_page = $this->numeric($myde_page);
  27. $this->myde_page_count = ceil($this->myde_total/$this->myde_size );
  28. $this->myde_url = $myde_url;
  29. if($this->myde_totalmyde_total=0;
  30. if($this->myde_page ;myde_page=1;
  31. if($this->myde_page_countmyde_page_count=1;
  32. if($this->myde_page>$this->myde_page_count) $this->myde_page= $this->myde_page_count;
  33. $this->limit = ($this->myde_page-1)*$this->myde_size;
  34. $this->myde_i=$this->myde_page-$show_pages ;
  35. $this->myde_en=$this->myde_page+$show_pages;
  36. if($this->myde_i $this->myde_en=$this->myde_en+(1-$this ->myde_i);
  37. $this->myde_i=1;
  38. }
  39. if($this->myde_en>$this->myde_page_count){
  40. $this->myde_i = $this->myde_i -($this->myde_en-$this->myde_page_count);
  41. $this->myde_en=$this->myde_page_count;
  42. }
  43. if($this->myde_i<1)$this-> ;myde_i=1;
  44. }
  45. //检测が数字かどうか
  46. private function numeric($num){
  47. if(strlen($num)){
  48. if(!preg_match("/^[0-9]+$/ ",$num)){
  49. $num=1;
  50. }else{
  51. $num = substr($num,0,11);
  52. }
  53. }else{
  54. $num=1;
  55. }
  56. return $num;
  57. }
  58. //地址置換
  59. private function page_replace($page){
  60. return str_replace("{page}",$page,$this->myde_url);
  61. }
  62. //首页
  63. private function myde_home(){
  64. if($this->myde_page!=1){
  65. return "page_replace(1)."" title="首页">首页 ";
  66. }else{
  67. return "

    首页

    ";
  68. }
  69. }
  70. //上一页
  71. プライベート関数 myde_prev(){
  72. if($this->myde_page!=1 ){
  73. return "page_replace($this->myde_page-1)."" title="上一页">上一页" ;
  74. }else{
  75. return "

    上一页

    ";
  76. }
  77. }
  78. //下一页
  79. プライベート関数 myde_next(){
  80. if($this->myde_page!= $this->myde_page_count){
  81. return "page_replace($this->myde_page+1)."" title="下一页">下一页";
  82. }else{
  83. return"

    下一页

    ";
  84. }
  85. }
  86. //尾页
  87. プライベート関数 myde_last(){
  88. if($this- >myde_page!=$this->myde_page_count){
  89. return "page_replace($this->myde_page_count)."" title="尾页">尾页";
  90. }else{
  91. return "

    尾页

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

    ...

    ";
  101. }
  102. for($i=$this-> ;myde_i;$i<=$this->myde_en;$i++){
  103. if($i==$this->myde_page){
  104. $str.="page_replace($i)."" title="第".$i."页" class="cur">$i";
  105. }else{
  106. $str.="page_replace($i)."" title="第".$i."页">$i";
  107. }
  108. }
  109. if( $this- >myde_ja<$this->myde_page_count ){
  110. $str.="

    ...

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

    ".$this->myde_page_count.

  115. " ".$this->myde_total."条数架

    ";
  116. $str.="
";
  • return $ str;
  • }
  • }
  • ?>
  • 复制代码

    php+mysql ページング原則: 制限 ($curpage-1)*$showrow,$showrow

    2、PHP表示ページのコード

    1. require_once('./page.class.php'); //ページングクラス
    2. $showrow = 3;//1ページに表示される行数
    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 ページング class-bbs.it-home.org
    16. if($total>$showrow){//レコードの合計数が各ページに表示される数より大きいため、ページングを表示します
    17. $page = new page($total,$showrow,$curpage,$ url,2);
    18. echo $page->myde_write();
    19. }
    20. ?>
  • < /body>
  • コードをコピー


    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。