>  기사  >  백엔드 개발  >  멋진 PHP MySQL 페이징 클래스

멋진 PHP MySQL 페이징 클래스

WBOY
WBOY원래의
2016-07-25 08:52:45776검색
  1. /*****************************
  2. * @Class 이름: 페이지
  3. * @Parameter: $myde_total - 총 레코드 수
  4. * $myde_size - 한 페이지에 표시되는 레코드 수
  5. * $myde_page - 현재 페이지
  6. * $myde_url - 현재 URL 가져오기
  7. * @Function: 페이징 구현
  8. * @ 저자 : 송해거
  9. */
  10. 수업 페이지 {
  11. private $myde_total; //총 기록 수
  12. private $myde_size; //한 페이지에 표시되는 레코드 수
  13. private $myde_page; //현재 페이지
  14. private $myde_page_count; //총 페이지 수
  15. private $myde_i; 시작 페이지
  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."条数据

    ";
  114. $str.="
";
  • return $str;
  • }
  • }
  • ?>
  • 复主代码
  • php mysql 페이징 원칙: 제한 ($curpage-1)*$showrow,$showrow

    2, PHP 표시 페이지 코드

    1. require_once('./page.class.php') //페이징 클래스
    2. $showrow = 3; //한 페이지에 표시되는 행 수
    3. $curpage = 비어 있음($_GET['page'])?1:$_GET['page'];//현재 페이지는 숫자가 아닌 상황도 처리해야 합니다
    4. $url = "?page={page}";//검색 조건이 있는 경우 페이징 주소="?page={page}&q=".$_GET['q']
    5. //The link 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. < ;meta charset="utf-8 ">
    16. 간단하고 보편적인 PHP 페이징 class-bbs.it-home.org
    17. < !--데이터 영역 표시-->
  • if ($total>$showrow){ //전체 레코드 수가 각 페이지에 표시된 수보다 많으므로 페이징을 표시합니다
  • $page = new page($total,$showrow,$curpage,$url,2) ;
  • echo $page->myde_write();
  • }
  • ?>
  • 코드 복사


    성명:
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.