> 백엔드 개발 > PHP 튜토리얼 > 내가 직접 작성한 간단한 범용 페이징 클래스

내가 직접 작성한 간단한 범용 페이징 클래스

WBOY
풀어 주다: 2016-07-25 08:47:57
원래의
958명이 탐색했습니다.
나는 개인적으로 PHP로 작성된 간단한 페이징 클래스를 배웠는데, 이는 매우 다재다능합니다.
  1. /**
  2. * 간단한 페이징 클래스
  3. * @author:phpprince
  4. * @QQ: 8923052
  5. * @date: 2014-04-22 21:08:35
  6. */
  7. 클래스 페이지{
  8. protected $url //Address
  9. protected $allnum; //총 레코드 수
  10. protected $current; //현재 페이지 번호
  11. protected $pagesize; //각 페이지에 표시되는 레코드 수
  12. protected $postfix
  13. protected $ style; // 총 3가지 표시 스타일이 있습니다. 1 2 3은 각각 처음 5개, 그 다음 4개, 처음 3개, 마지막 3개, 처음 4개, 마지막 4개를 의미합니다.
  14. public function __construct($url,$allnum, $current,$pagesize=10, $postfix='',$style=1){
  15. $this->url=$url;
  16. $this->allnum=$allnum;
  17. $ this->current=$current ;
  18. $this->pagesize=$pagesize;
  19. $this->postfix=$postfix;
  20. $this->style=$style;
  21. }
  22. //전체 페이지 수 가져오기
  23. protected function maxPageNum(){
  24. $max=ceil($this->allnum/$this->pagesize);
  25. //페이지 번호 제한 초과 수정
  26. if($this->current>$max){
  27. $this->current=$max;
  28. }
  29. if($this- >current<1){
  30. $this ->current=1;
  31. }
  32. return $max;
  33. }
  34. //첫 번째 페이지의 전체 HTML 가져오기 link str
  35. 보호된 함수 firstUrl(){
  36. if($this->current!=1)
  37. {
  38. return '홈페이지';
  39. }else{
  40. return 'Homepage ';
  41. }
  42. }
  43. //이전 페이지 링크의 전체 html 가져오기 str
  44. 보호된 함수 prevUrl(){
  45. if( $this->current<=1){
  46. $fullurl='이전 페이지';
  47. }else{
  48. $fullurl=$this->url.($this->current-1).$this->postfix;
  49. $ fullurl='이전 페이지';
  50. }
  51. return $fullurl;
  52. }
  53. //다음 페이지 링크의 전체 HTML 가져오기 str
  54. protected function nextUrl(){
  55. if($this-> current>=$this->maxPageNum() ){
  56. $fullurl='다음 페이지';
  57. }else{
  58. $fullurl= $this->url.($this->current 1).$this->postfix;
  59. $fullurl='< ;a href="'.$fullurl.'">다음 페이지';
  60. }
  61. return $fullurl;
  62. }
  63. //마지막 페이지 링크의 전체 HTML 가져오기 str
  64. protected function lastUrl(){
  65. if($this->current>=$this->maxPageNum()){
  66. $fullurl='< ;span id="lastpage">마지막 페이지';
  67. }else{
  68. $fullurl=$this-> ;url.$this-> ;maxPageNum().$this->postfix;
  69. $fullurl='';
  70. }
  71. return $fullurl;
  72. }
  73. //지정된 URL의 전체 URL을 가져옵니다. 페이지 번호
  74. protected function getUrl( $pageno){
  75. return $this->url.$pageno.$this->postfix;
  76. }
  77. //표시 스타일 지정
  78. 보호된 함수 getStyle(){
  79. 스위치($this->style){
  80. 사례 1:
  81. $before=5;
  82. $after=4;
  83. break;
  84. 사례 2:
  85. $before =3;
  86. $after=3;
  87. break;
  88. 사례 3:
  89. $before=4;
  90. $after=4;
  91. break;
  92. 기본값 :
  93. $before=5;
  94. $after=4;
  95. }
  96. return array($before,$after);
  97. }
  98. //중간 URL 가져오기 1 2 3 4 5 ⑥ 7 8 9 10
  99. protected function getMiddelUrl(){
  100. $max=$this->maxPageNum() //전체 페이지를 먼저 가져옵니다. 현재 페이지 오버런 문제를 수정하려면
  101. $current=$this->current; //다음 페이지 번호 범위가 올바른지 확인하려면 현재 페이지 번호가 적법해야 합니다.
  102. //현재 스타일 가져오기
  103. list($before,$after)=$this-> getStyle();
  104. $startno=$current-$before; //시작 페이지 번호
  105. $endno=$current $after; 끝 페이지 번호
  106. //항상 출력이 요구 사항을 충족하는지 확인하려면 페이지가 제한을 초과하지 않는다는 전제 하에 시작 페이지가 늘어나면 끝 페이지도 늘어나야 하며, 그 반대도 마찬가지입니다.
  107. while($endno>$max||$startno<1){
  108. if($endno> $max){ //끝 페이지 수가 제한을 초과했습니다.
  109. $endno--;
  110. if ($startno>1){
  111. $startno--;
  112. }
  113. }
  114. if($startno<1){ //시작 페이지 번호가 범위를 벗어났습니다.
  115. $startno ;
  116. if($endno<$max){
  117. $endno ;
  118. }
  119. }
  120. }
  121. $str=''; //전체 HTML 문자열을 저장하는 데 사용됩니다
  122. for($i=$startno;$i<=$endno;$i ){
  123. $currenturl=$ this->getUrl($i);
  124. if($i!=$current){
  125. $str.="{$ i}< /a>";
  126. }else{
  127. $str.=''.$i.'< /span>' ;
  128. }
  129. }
  130. return $str;
  131. }
  132. //전체 페이징 HTML 문자열 반환
  133. public function getPageStr(){
  134. $str='
    '.$this->firstUrl().$this->prevUrl();
  135. $str.=$this->getMiddelUrl();
  136. $ str.=$this->nextUrl().$this->lastUrl().'total'.$this->maxPageNum().'page '.$this ->allnum.'Bar
';
  • return $str;
  • }
  • }
  • ?>
  • 코드 복사 내가 직접 작성한 간단한 범용 페이징 클래스


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