>백엔드 개발 >PHP 튜토리얼 >간단하고 보편적인 PHP 페이징 클래스를 보여주는 예

간단하고 보편적인 PHP 페이징 클래스를 보여주는 예

WBOY
WBOY원래의
2016-07-25 09:12:11935검색
자세한 예시 주소: http://www.alleyloft.com/contents/share?id=3 간단하고 보편적인 PHP 페이징 클래스를 보여주는 예
  1. /***********************************************
  2. * @ 클래스 이름: page
  3. * @Parameter: $myde_total - 총 레코드 수
  4. * $myde_size - 한 페이지에 표시되는 레코드 수
  5. * $myde_page - 현재 페이지
  6. * $myde_url - 가져오기 현재 URL
  7. * @Function: 페이징 구현
  8. * @Author: 송하이거
  9. */
  10. 수업 페이지 {
  11. private $myde_total; //총 레코드 수
  12. private $ myde_size; //한 페이지에 표시되는 레코드 수
  13. private $myde_page; //현재 페이지
  14. private $myde_page_count; //전체 페이지 수
  15. //시작 페이지 수
  16. private $ myde_en; //종료 페이지 수
  17. private $myde_url; //현재 URL 가져오기
  18. /*
  19. * $show_pages
  20. * 페이지 표시 형식, 표시할 페이지 수 표시 링크는 2*$show_pages 1입니다.<# 🎜> 공개 함수 __construct($myde_total=1,$myde_size=1,$myde_page=1,$myde_url,$show_pages=2){
  21. $this->myde_total = $this->numeric($myde_total) ;
  22. $this->myde_size = $this->numeric($myde_size);
  23. $this->myde_page = $this->numeric($myde_page);
  24. $this-> ;myde_page_count = ceil($this->myde_total/$this->myde_size);
  25. $this->myde_url = $myde_url;
  26. if($this->myde_total<0) $this- >myde_total=0;
  27. if($this->myde_page<1) $this->myde_page=1;
  28. if($this->myde_page_count<1) $this->myde_page_count= 1;
  29. if($this->myde_page>$this->myde_page_count) $this->myde_page=$this->myde_page_count;
  30. $this->limit = ($this-> ;myde_page-1)*$this->myde_size;
  31. $this->myde_i=$this->myde_page-$show_pages;
  32. $this->myde_en=$this->myde_page $ show_pages;
  33. if($this->myde_i<1){
  34. $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. 전용 함수 숫자($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. 비공개 함수 page_replace($page){
  58. return str_replace("{page}",$page,$this->myde_url);
  59. }
  60. //首页
  61. 비공개 함수 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 "myde_page 1)."" title="下一页">下一页";
  80. }else{
  81. return"

    下一页

    ";
  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. 공개 함수 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.="

    전체".$this->myde_page_count.

  113. "페이지".$this->myde_total."data";
  114. $str.="
";
  • return $str;
  • }
  • }
  • ?>
  • 코드 복사
    1. require_once('./page.class.php'); //Paging 클래스
    2. $showrow = 3;//한 페이지에 표시 행 수
    3. $curpage = 비어 있음($_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. <메타 문자 집합 ="utf-8">
    16. 예는 간단하고 보편적인 PHP 페이징 클래스를 보여줍니다