シンプルでユニバーサルな PHP ページング クラスを示す例

WBOY
リリース: 2016-07-25 09:12:11
オリジナル
884 人が閲覧しました
詳細なアドレス例: http://www.alleyloft.com/contents/share?id=3 シンプルでユニバーサルな PHP ページング クラスを示す例
    /***********************************************
  1. * @classname : page
  2. * @Parameters: $myde_total - レコードの総数
  3. * $myde_size - 1 ページに表示されるレコード数
  4. * $myde_page - 現在のページ
  5. * $myde_url - 現在の URL を取得
  6. * @Function: ページングの実装
  7. * @著者:ソン・ハイゲ
  8. */
  9. class page {
  10. private $myde_total; //総レコード数
  11. private $myde_size //1 ページに表示されるレコード数
  12. private $myde_page; ; / /現在のページ
  13. private $myde_page_count; //ページの総数
  14. private $myde_en //現在のページの数
  15. / *
  16. * $show_pages
  17. * ページの表示形式、リンクを表示するページ数は 2*$show_pages+1 です。
  18. * 如$show_pages=2那么页面上显示是[首页] [上页] 1 2 3 4 5 [下页] [尾页]
  19. */
  20. private $show_pages;
  21. public function __construct($myde_total=1) ,$myde_size=1,$myde_page=1,$myde_url,$show_pages=2){
  22. $this->gt;myde_total = $this->numeric($myde_total);
  23. $this->myde_size = $this- >numeric($myde_size);
  24. $this->myde_page = $this->numeric($myde_page);
  25. $this->myde_page_count = ceil($this->myde_total/$this->myde_size );
  26. $this->myde_url = $myde_url;
  27. if($this->myde_totalmyde_total=0;
  28. if($this->myde_page ;myde_page=1;
  29. if($this->myde_page_countmyde_page_count=1;
  30. if($this->myde_page>$this->myde_page_count) $this->myde_page= $this->myde_page_count;
  31. $this->limit = ($this->myde_page-1)*$this->myde_size;
  32. $this->myde_i=$this->myde_page-$show_pages ;
  33. $this->myde_en=$this->myde_page+$show_pages;
  34. if($this->myde_i $this->myde_en=$this->myde_en+(1-$this ->myde_i);
  35. $this->myde_i=1;
  36. }
  37. if($this->myde_en>$this->myde_page_count){
  38. $this->myde_i = $this->myde_i -($this->myde_en-$this->myde_page_count);
  39. $this->myde_en=$this->myde_page_count;
  40. }
  41. if($this->myde_i<1)$this-> ;myde_i=1;
  42. }
  43. //检测が数字かどうか
  44. private function numeric($num){
  45. if(strlen($num)){
  46. if(!preg_match("/^[0-9]+$/ ",$num)){
  47. $num=1;
  48. }else{
  49. $num = substr($num,0,11);
  50. }
  51. }else{
  52. $num=1;
  53. }
  54. return $num;
  55. }
  56. //地址置換
  57. private function page_replace($page){
  58. return str_replace("{page}",$page,$this->myde_url);
  59. }
  60. //首页
  61. private function myde_home(){
  62. if($this->myde_page!=1){
  63. return "page_replace(1)."" title="首页">首页 ";
  64. }else{
  65. return "

    首页

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

    上一页

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

    gt;下一页

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

    尾页

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

    ...

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

    ...

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

    total".$this- > ;myde_page_count.

  113. "page".$this->myde_total."data

    ";
  114. $str.=" return $str;
  115. }
  116. }
  117. ?>
コードをコピー
  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 制限 ".($ curpage-1)*$showrow.",$showrow;";
  13. ...
  14. ?>
  15. シンプルでユニバーサルな PHP ページング クラスを示す例
  16. < div class="main">
  • if($total>$showrow){//レコードの合計数が各ページに表示される数より大きいため、ページングを表示します
  • $page = new page($total ,$showrow,$curpage,$url,2);
  • echo $page->myde_write();
  • }
  • ?>
  • < ;/html>
  • コードをコピー


    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート