>php教程 >php手册 >복각: 페이징 원리 + 페이징 코드 + 페이징 클래스 제작

복각: 페이징 원리 + 페이징 코드 + 페이징 클래스 제작

WBOY
WBOY원래의
2016-09-24 09:02:461054검색

페이징 표시는 대량의 데이터를 탐색하고 표시하는 매우 일반적인 방법이며 웹 프로그래밍에서 가장 일반적으로 처리되는 이벤트 중 하나입니다. 웹 프로그래밍 베테랑들에게는 이런 코드를 작성하는 것이 숨 쉬는 것처럼 자연스러운 일이지만, 초보자들에게는 이 문제에 대해 헷갈리는 경우가 많기 때문에 이 문제를 자세히 설명하기 위해 특별히 이 글을 썼습니다.

1. 페이징 원리:
소위 페이징 표시란 데이터베이스에 설정된 결과를 인위적으로 섹션으로 나누는 것을 의미합니다. 표시하려면 두 개의 초기 매개변수가 필요합니다.

페이지당 레코드 수($PageSize)는 얼마입니까?
현재 페이지($CurrentPageID)는 어떤 페이지인가요?

이제 다른 결과 세트를 제공하면 특정 결과를 표시할 수 있습니다.

이전 페이지($PReviousPageID), 다음 페이지($NextPageID), 총 페이지 수($numPages) 등과 같은 기타 매개변수는 이전 항목을 기반으로 얻을 수 있습니다.

MySQL 데이터베이스를 예로 들면, 테이블의 특정 콘텐츠를 가로채려는 경우 sql 문을 사용할 수 있습니다. 다음 SQL 문 세트를 살펴보고 규칙을 찾아보세요.

처음 10개 레코드: 테이블 제한 0,10에서 * 선택
11~20번째 레코드: 테이블 제한 10,10에서 * 선택
21~30번째 레코드: 테이블 제한에서 * 선택 20,10
......
이 SQL 문 세트는 실제로 $PageSize=10일 때 테이블의 각 페이지에서 데이터를 가져오는 SQL 문입니다.
select * from tablelimit ($CurrentPageID - 1) * $PageSize, $PageSize
이 템플릿을 사용하여 해당 값을 대체하고 이를 위의 SQL 문 집합과 비교하여 해당되는지 확인합니다. 데이터를 얻는 방법에 대한 가장 중요한 문제를 해결한 후에 남은 것은 매개변수를 전달하고 적절한 SQL 문을 구성한 다음 PHP를 사용하여 데이터베이스에서 데이터를 가져와 표시하는 것입니다.


2. 페이지 매김 코드 설명: 5단계

코드가 완전히 설명되어 있으며 복사할 수 있습니다. 메모장에서 직접 사용하세요

  1. 직원 정보 목록
  2. //모든 emp 테이블의 정보 표시
  3. //1. 데이터베이스에 연결합니다
  4. $conn=mysql_connect('localhost','root','1234abcd') 또는 die('연결 데이터베이스 오류'.mysql_error());
  5. //2. 데이터베이스 선택
  6. mysql_select_db('empManage');
  7. //3. 문자셋을 선택하세요
  8. mysql_query('set names utf8');
  9. //4.SQL 문을 보내고 처리 결과를 가져옵니다
  10. //4.1 Pagling [두 개의 SQL 문을 보내는 Pagling 중 하나는 $ Rowcount를 가져오는 것이고, 다른 하나는 SQL의 Limit을 통해 Paging 결과를 얻는 것입니다. 따라서 두 개의 결과 세트를 얻게 됩니다. 이름을 지정할 때 이를 구별하는 것을 잊지 마십시오.
  11. 페이징(4개의 값과 2개의 SQL 문). ]
  12. $pageSize=3;//각 페이지에 표시되는 레코드 수
  13. $rowCount=0;//총 레코드 수
  14. $pageNow=1;//어떤 페이지를 표시하시겠습니까
  15. $pageCount=0;//총 몇 개의 페이지가 있나요? [페이징에 대한 표시는 4개가 있는데, 하나도 빠질 수 없습니다. $rowCount는 서버에서 얻을 수 있으므로 초기값은 0으로 지정할 수 있습니다.
  16. $pageNow는 어떤 페이지를 표시하려고 합니까? $pageSize는 각 페이지에 표시할 레코드 수를 미리 결정합니다.
  17. $pageCount=ceil($rowCount/$pageSize), $rowCount의 초기 값은 0일 수 있으므로 $pageCount는 물론 0으로 설정될 수 있습니다. 4개의 표시기(2개는 0, 하나는 1, 다른 하나는) 웹사이트가 필요합니다. ]
  18. //4.15 페이징 링크에 따라 $ PAGENOW 값 수정
  19. if(!empty($_GET['pageNow'])){
  20. $pageNow=$_GET['pageNow'];
  21.               }[페이징 링크를 기준으로 $pageNow 값을 수정합니다. ]
  22. $sql='emp에서 개수(id) 선택';
  23. $res1=mysql_query($sql);
  24. //4.11 행 수 가져오기
  25. if($row=mysql_fetch_row($res1)){
  26.                   $rowCount=$row[0];                         
  27. }//[$rowCount를 가져오면 $pageCount라는 두 개의 표시기를 알 수 있습니다. ]
  28. //4.12 페이지 수 계산
  29. $pageCount=ceil($rowCount/$pageSize);
  30. $pageStart=($pageNow-1)*$pageSize;
  31. //4.13 페이징으로 SQL 결과 보내기
  32. $sql="select * from emplimit $pageStart,$pageSize";//[$sql문의 제한 이후 2개의 값(시작값, 페이지당 항목 수)을 기준으로 페이징을 구현합니다. . 그리고 이 두 값을 찾아보세요.]
  33.         $res2=mysql_query($sql,$conn) 또는 die('无法获取结果集'.mysql_error());
  34.         echo '';[        echo "
    ";]
  35. "
  36. 아이디이름이름등급번째>이메일번째>월급 /th>";        while($row=mysql_fetch_assoc($res2)){
  37.                 echo "< ;td>删除用户
    删除用户修改用户
    {$row['id']}{$row['name']}{ $row['grade']}{$row['email']}{$row['salary']}修改用户";        }
  38.         에코 '
    ';
  39.         //4.14打印流页码的超链接
  40.         for($i=1;$i<=$pageCount;$i++){
  41.                 echo "$i ";//[打印流页码的超链接]
  42.         
  43.         }
  44.         //5.释放资源,关闭连接
  45.         mysql_free_result($res2);
  46.         mysql_close($conn);
  47. ?>

  48. 삼、简单分页类分享

             现재공布一个简单分类料类这个类의 근본 원리와 步骤,其他复杂类也就能够触类旁通了。不废话,直接上源码,可以直接用在你的项目中。

            数据库操작类代码:mysqli.func.php
          

    1. // 数据库连接常weight  
    2. define('DB_HOST', 'localhost');  
    3. define('DB_USER', '루트');  
    4. define('DB_PWD', '');  
    5. define('DB_NAME', 'guest');  
    6.   
    7. // 连接数据库  
    8. 함수 conn()  
    9. {  
    10.     $conn = mysqli_connect(DB_HOST, DB_USER, DB_PWD, DB_NAME);  
    11.     mysqli_query($conn, "set names utf8");  
    12.     $conn을 반환합니다.  
    13. }  
    14.   
    15. //获得结果集  
    16. doresult($sql) 함수{  
    17.    $result=mysqli_query(conn(), $sql);  
    18.    return  $result;  
    19. }  
    20.   
    21. //结果集转为对象集合  
    22. 함수 목록($result){  
    23.     return mysqli_fetch_array($result, MYSQL_ASSOC);  
    24. }  
    25.   
    26. 함수 totalnums($sql) {  
    27.     $result=mysqli_query(conn(), $sql);  
    28.     return $result->num_rows;  
    29. }  
    30.   
    31. // 关闭数据库  
    32. closedb() 함수  
    33. {  
    34.     if (! mysqli_close()) {  
    35.         exit('关闭异常');  
    36.     }  
    37. }  
    38.   
    39. ?>   


    페이징 구현 코드:


    1. 'mysqli.func.php' 포함
    2. //총 레코드 수
    3. $sql = "tb_user에서 dg_id 선택"
    4. $totalnums = 총합($sql)
    5. //각 페이지에 표시되는 항목 수
    6. $fnum = 8
    7. //넘긴 페이지 수
    8. $pagenum = ceil($totalnums / $fnum)
    9. // 페이지 번호 상수
    10. @$tmp = $_GET['페이지']
    11. //악성 페이지 넘김 방지
    12. if ($tmp > $pagenum)
    13. echo "<script>window.location.href='index.php'</script>"
    14. //페이징 시작 값 계산
    15. if ($tmp == "") {
    16. $번호 = 0
    17. } else {
    18. $num = ($tmp - 1) * $fnum
    19. }
    20. // 쿼리문
    21. $sql = "tb_user ORDER BY dg_id DESC LIMIT에서 dg_id,dg_username 선택" . $num ",$fnum";
    22. $result = doresult($sql)
    23. // 트래버스 출력
    24. while (! ! $rows = dolists($result)) {
    25. echo $rows['dg_id'] . " " . $rows['dg_username'] "
      ";
    26. }
    27. // 페이지 넘김 링크
    28. for ($i = 0; $i < $pagenum; $i ++) {
    29. echo "" . ""
    30. }
    31. ?>
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.