실용적인 PHP 페이징 클래스

WBOY
풀어 주다: 2016-07-25 09:11:04
원래의
908명이 탐색했습니다.
  1. /*

  2. 기능적이고 실용적인 PHP 페이징 클래스
  3. 하위 페이지
  4. */
  5. class SubPages{
  6. private $each_disNums;//각 페이지에 표시되는 항목 수
  7. private $nums;//총 항목 수
  8. private $current_page;//현재 선택된 페이지
  9. private $sub_pages;//매번 표시되는 페이지 수
  10. private $pageNums;//총 페이지 수
  11. private $page_array = array();//페이징 구성에 사용되는 배열
  12. private $subPage_link ;/ /각 페이지 링크
  13. private $subPage_type;//페이지 유형 표시>/p>
  14. /*

  15. __construct는 클래스를 생성할 때 사용되는 SubPages의 생성자입니다. run.
  16. @$each_disNums 각 페이지에 표시되는 항목 수
  17. @nums 총 항목 수
  18. @current_num 현재 선택한 페이지
  19. @sub_pages 매번 표시되는 페이지 수
  20. @subPage_link 각 A 페이징 링크
  21. @subPage_type은 페이징 유형을 표시합니다.
  22. @subPage_type=1인 경우 일반 페이징 모드입니다.
  23. 예: 총 4523개의 레코드, 각 페이지에 10개의 레코드가 표시되고 현재 1/ 페이지 453 [홈페이지] [이전 페이지] [다음 페이지] [마지막 페이지]
  24. @subPage_type=2인 경우 클래식 페이징 스타일
  25. 예: 현재 페이지 1/453 [홈페이지] [이전 페이지 ] 1 2 3 4 5 6 7 8 9 10 [다음 페이지] [마지막 페이지]
  26. */
  27. function __construct($each_disNums,$nums,$current_page,$sub_pages,$subPage_link,$subPage_type){
  28. $this->each_disNums=intval($each_disNums);
  29. $this->nums=intval($nums);
  30. if(!$current_page){
  31. $this->current_page =1 ;
  32. }else{
  33. $this->current_page=intval($current_page);
  34. }
  35. $this->sub_pages=intval($sub_pages);
  36. $this -> ;pageNums=ceil($nums/$each_disNums);
  37. $this->subPage_link=$subPage_link;
  38. $this->show_SubPages($subPage_type);
  39. //echo $this- > pageNums."--".$this->sub_pages;
  40. }
  41. /*
  42. __destruct 소멸자, 클래스가 더 이상 사용되지 않을 때 호출되며 이 함수는 해제하는 데 사용됩니다. 자원.
  43. */
  44. 함수 __destruct(){
  45. unset($each_disNums);
  46. unset($nums);
  47. unset($current_page);
  48. unset($sub_pages);
  49. unset($pageNums);
  50. unset($page_array);
  51. unset($subPage_link);
  52. unset($subPage_type);
  53. }
  54. /*
  55. show_SubPages 함수는 생성자에서 사용됩니다. 그리고 표시할 페이징을 결정하는 데 사용됩니다
  56. */
  57. function show_SubPages($subPage_type){
  58. if($subPage_type == 1){
  59. $this->subPageCss1();
  60. }elseif ($subPage_type == 2){
  61. $this->subPageCss2();
  62. }
  63. }
  64. /*
  65. 페이징 기능 생성을 위한 배열을 초기화하는 데 사용됩니다. .
  66. */
  67. 함수 initArray(){
  68. for($i=0;$i<$this->sub_pages;$i ){
  69. $this->page_array[$i] =$i;
  70. }
  71. return $this->page_array;
  72. }
  73. /*
  74. construction_num_Page该函数使用来构造显示的条目
  75. 即使:[1 ][2][3][4][5][6][7][8][9][10]
  76. */
  77. 함수 constructor_num_Page(){
  78. if($this-> ;pageNums < $this->sub_pages){
  79. $current_array=array();
  80. for($i=0;$i<$this->pageNums;$i ){
  81. $ current_array[$i]=$i 1;
  82. }
  83. }else{
  84. $current_array=$this->initArray();
  85. if($this->current_page <= 3 ){
  86. for($i=0;$i $current_array[$i]=$i 1;
  87. }
  88. }elseif ($ this->current_page <= $this->pageNums && $this->current_page > $this->pageNums - $this->sub_pages 1 ){
  89. for($i=0;$ i $current_array[$i]=($this->pageNums)-($this->sub_pages) 1 $i;
  90. }
  91. }else{
  92. for($i=0;$i $current_array[$i]=$this->current_page-2 $i;
  93. } }
  94. }
  95. return $ current_array;
  96. }
  97. /*
  98. 共 4523 条记录, 每页显示 10 ​​条,当前第1/453页 [首页] [上页] [下页] [尾页]
  99. */
  100. function subPageCss1(){
  101. $subPageCss1Str="";
  102. $subPageCss1Str.= "共".$this->nums."条记录,";
  103. $subPageCss1Str.="每页显示".$this->each_disNums."条,";
  104. $subPageCss1Str.="当前第".$this->current_page."/".$this->pageNums."页 ";
  105. if($this->current_page > 1){
  106. $firstPageUrl=$this->subPage_link."1";
  107. $prewPageUrl=$this->subPage_link.($this->current_page-1);
  108. $subPageCss1Str. ="[首页] ";
  109. $subPageCss1Str.="[上一页 }else {
  110. $subPageCss1Str.="[首页] ";
  111. $subPageCss1Str.="[上一页] ";
  112. }
  113. if( $this->current_page < $this->pageNums){
  114. $lastPageUrl=$this->subPage_link.$this->pageNums;
  115. $nextPageUrl=$this->subPage_link.( $this->current_page 1);
  116. $subPageCss1Str.=" [下一页] ";
  117. $subPageCss1Str.="[< ;a href='$lastPageUrl'>尾页] ";
  118. }else {
  119. $subPageCss1Str.="[下一页] ";
  120. $subPageCss1Str.="[尾页] ";
  121. }
  122. echo $subPageCss1Str;
  123. }
  124. /*
  125. 构造经典模式的分页
  126. 当前第1/453页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页]
  127. */
  128. 함수 subPageCss2(){
  129. $subPageCss2Str="";
  130. $subPageCss2Str.="当前第".$this->current_page."/".$ this->pageNums."页 ";
  131. if($this->current_page > 1){
  132. $firstPageUrl=$this->subPage_link."1";
  133. $ prewPageUrl=$this->subPage_link.($this->current_page-1);
  134. $subPageCss2Str.="[首页] ";
  135. $subPageCss2Str.="[上一页] ";
  136. }else {
  137. $subPageCss2Str.="[首页] ";
  138. $subPageCss2Str.="[上一页] ";
  139. }
  140. $a=$this->construct_num_Page();
  141. for($i=0;$i $s=$a[$i];
  142. if($s == $this->current_page ){
  143. $subPageCss2Str.="[< span style='color:red;font-weight:bold;'>".$s."]";
  144. }else{
  145. $url=$this->subPage_link. $s;
  146. $subPageCss2Str.="[".$s."]";
  147. }
  148. }
  149. if($this->current_page < $this->pageNums){
  150. $lastPageUrl=$this->subPage_link.$this->pageNums;
  151. $nextPageUrl=$this->subPage_link.($this->current_page 1) ;
  152. $subPageCss2Str.=" [下一页] ";
  153. $subPageCss2Str.="[尾页] ";
  154. }else {
  155. $subPageCss2Str.="[下一页] ";
  156. $subPageCss2Str.="[尾页] ";
  157. }
  158. echo $subPageCss2Str;
  159. }
  160. }
  161. ?>

复主代码

테스트 페이지, test.php

  1. require_once("SubPages.php");
  2. //각 페이지에 표시 항목 수
  3. $page_size=20;

  4. //총 항목 수
  5. $nums=1024;

  6. //매번 표시된 페이지 수

  7. $sub_pages=10;

  8. //현재 페이지 가져오기

  9. $pageCurrent=$_GET ["p"] ;

  10. //if(!$pageCurrent) $pageCurrent=1;
  11. $subPages=new SubPages($page_size,$nums,$pageCurrent,$sub_pages,"test.php ?p=", 2);
  12. ?>

코드 복사


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿