ホームページ >バックエンド開発 >PHPチュートリアル >自分で書いた簡単なユニバーサル ページング クラス

自分で書いた簡単なユニバーサル ページング クラス

WBOY
WBOYオリジナル
2016-07-25 08:47:57959ブラウズ
私は個人的に、汎用性の高い PHP で書かれた簡単なページング クラスを学びました。
    /**
  1. * シンプルなページングクラス
  2. * @author:phpprince
  3. * @QQ: 8923052
  4. * @date: 2014-04-22 21:08:35
  5. */
  6. class Page{
  7. protected $url; //アドレス
  8. protected $allnum; //現在のページ番号
  9. protected $pagesize; // 各ページに表示されるレコードの数
  10. protected $postfix; // Suffix
  11. protected $style; // 3 つの表示スタイルがあり、1 2 3 はそれぞれ最初の 5 つと最後の 4 つを意味します。最初の 3 つと最後の 3 つ、最初の 4 つ Post 4
  12. public function __construct($url,$allnum,$current,$pagesize=10,$postfix='',$style=1){
  13. $this-> ;url=$url;
  14. $this-> ;allnum=$allnum;
  15. $this->current=$current;
  16. $this->pagesize=$pagesize;
  17. $this->postfix=$postfix;
  18. $this->style=$style;
  19. }
  20. //総ページ数を取得
  21. protected function maxPageNum(){
  22. $max=ceil($this->allnum/$this->pagesize) ;
  23. //ページ数オーバー修正
  24. if($this ->current>$max){
  25. $this->current=$max;
  26. }
  27. if($this->current $this->current=1;
  28. }
  29. return $ max;
  30. }
  31. //最初のページのリンクの完全な HTML を取得する str
  32. protected function firstUrl(){
  33. if($this->current!= 1)
  34. {
  35. return 'ホームページ';
  36. }else{
  37. return 'ホームページ';
  38. }
  39. }
  40. //Get前のページのリンクの完全な HTML str
  41. protected function prevUrl() {
  42. if($this->current<=1){
  43. $fullurl='previous page';
  44. }else{
  45. $fullurl=$this->url.($this->current-1).$this->postfix;
  46. $fullurl=' 前のページ';
  47. }
  48. return $fullurl;
  49. }
  50. //次の 1 ページのリンクを取得します html str
  51. protected function nextUrl(){
  52. if($this->current>=$this->maxPageNum()){
  53. $fullurl=' < ;a>次のページ';
  54. }else{
  55. $fullurl=$this->url.($this->current+ 1).$this->postfix ;
  56. $fullurl='次のページ< /a>';
  57. }
  58. return $fullurl;
  59. }
  60. //最後のページのリンクの完全な HTML を取得します str
  61. protected function lastUrl(){
  62. if($this->current> =$this->maxPageNum( )){
  63. $fullurl='lastpage';
  64. }else{
  65. $fullurl= $this->url .$this->maxPageNum().$this->postfix;
  66. $fullurl='最後のページ';
  67. }
  68. return $fullurl;
  69. }
  70. //指定されたページ番号の完全な URL を取得します
  71. protected function getUrl($ pageno){
  72. return $this- >url.$pageno.$this->postfix;
  73. }
  74. //表示スタイルを指定
  75. protected function getStyle(){
  76. switch($this->style){
  77. ケース 1:
  78. $before=5 ;
  79. $after=4;
  80. ブレーク;
  81. ケース 2:
  82. $before=3;
  83. $after=3;
  84. ブレーク;
  85. ケース 3:
  86. $before=4;
  87. $ after=4;
  88. break;
  89. default :
  90. $before=5;
  91. $after=4;
  92. }
  93. return array($before,$after);
  94. }
  95. //中間URLを取得する 1 2 3 4 5 ⑥ 7 8 9 10
  96. protected function getMiddelUrl (){
  97. $max=$this->maxPageNum(); //現在のページのオーバーラン問題を修正するために、最初に合計ページを取得します
  98. $current=$this->current ; //次のページ番号範囲が正しいことを確認するには、現在のページ番号が有効である必要があります
  99. //現在のスタイルを取得します
  100. list($before,$after)=$this->getStyle();
  101. $startno= $current-$before; //開始ページ番号
  102. $endno= $current+$after; //出力が常に要件を満たすようにするには、開始ページが増加する場合は、終了ページも増加する必要があります。 、その逆も同様です。
  103. while($endno>$ max||$startno<1){
  104. if($endno>$max){ //終了ページ番号が範囲外です
  105. $endno--;
  106. if( $startno>1){
  107. $startno--;
  108. }
  109. }
  110. if($startno $startno++;
  111. if($endno $endno++;
  112. }
  113. }
  114. }
  115. $str=''; //HTML 全体を保存するには str
  116. for($i=$startno;$i<=$endno;$i++){
  117. $currenturl=$this->getUrl($i);
  118. if($i! =$current) {
  119. $str.="{$i}";
  120. }else{
  121. $str.=''.$i.'';
  122. }
  123. }
  124. return $str;
  125. }
  126. // 完全なページング HTML 文字列を返します
  127. public function getPageStr() {
  128. $str='
    '.$this->firstUrl().$this->prevUrl();
  129. $str.=$this-> getMiddelUrl();
  130. $str.=$this->nextUrl().$this->lastUrl().'total'.$this->maxPageNum(). 'ページ'。$this->allnum.'bar
';
  • return $str;
  • }
  • }
  • ?>
  • コードをコピーします 自分で書いた簡単なユニバーサル ページング クラス


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