>백엔드 개발 >PHP 튜토리얼 >PHP에서 페이징을 구현하는 원리와 단계

PHP에서 페이징을 구현하는 원리와 단계

王林
王林원래의
2019-09-02 14:55:058234검색

PHP에서 페이징을 구현하는 원리와 단계

1. 구성 정보 캡슐화

1. 구성 파일 config.php를 만들 수 있습니다. 상수로 사용해야 하는 모든 구성을 설정합니다.

<?php
//数据库服务器
define(&#39;DB_HOST&#39;, &#39;localhost&#39;);
//数据库用户名
define(&#39;DB_USER&#39;, &#39;root&#39;);
//数据库密码
define(&#39;DB_PWD&#39;, &#39;secret&#39;);
//库名
define(&#39;DB_NAME&#39;, &#39;book&#39;);
//字符集
define(&#39;DB_CHARSET&#39;, &#39;utf8&#39;);

2. 2. 나중에 데이터베이스에 연결해야 할 경우에만 포함하면 됩니다. Connection.php 파일.

코드는 다음과 같습니다.

<?php
include &#39;config.php&#39;;$conn = mysqli_connect(DB_HOST, DB_USER, DB_PWD, DB_NAME);
if (mysqli_errno($conn))
 {  mysqli_error($conn);
    exit;
  }
mysqli_set_charset($conn, DB_CHARSET);
?>

앞으로 각 파일에 Connection.php 파일을 직접 포함시켜 데이터베이스 연결을 실현할 수 있습니다.

include &#39;connection.php&#39;;

두 번째, 디스플레이 페이징 구현

페이지는 다음과 같아야 합니다. 페이징에 포함되는 기본 요소는 다음과 같습니다.

PHP에서 페이징을 구현하는 원리와 단계

페이지 번호를 제어할 때 URL 주소 표시줄을 통해 페이지 번호 값을 전달하여 페이지 번호 제어를 구현합니다. page.php에 페이지 번호 관련 정보를 추가하면 보다 효과적인 정보를 산출할 수 있습니다. URL 제어 페이징의 효과는 다음과 같습니다.

PHP에서 페이징을 구현하는 원리와 단계

코드 구현에서 페이징은 실제로 오프셋(offset)과 제한 뒤의 숫자(num)를 통해 구현됩니다.

limit offset , num

PHP에서 페이징을 구현하는 원리와 단계

페이지당 5개의 항목이 표시된다고 가정합니다. 페이징 제한을 제어하는 ​​최종 공식은 다음과 같습니다.

offset的值为 (n-1)*5
num 为规定的5

3. 구현 단계

1. 페이징에 필요한 매개변수

1-1을 계산합니다.
1-2, 현재 페이지


page.php 페이지에 처음 접속하시면 url은 http://www.php.com/page.php 이고 뒤에는 페이지식별번호?page=1이 없습니다. 그것.

그래서 페이지 식별 번호를 수동으로 생성하고 이를 현재 페이지 번호 변수 $page에 전달해야 합니다.

사용자가 전달한 페이지에 소수점 등이 있을까봐 강제 형식 변환을 수행합니다: (int) $_GET['page'].

첫 번째 작성 방법:

通过查询user表的count(id),得到总数$count。
$count_sql = &#39;select count(id) as c from user&#39;;
$result = mysqli_query($conn, $count_sql);
$data = mysqli_fetch_assoc($result);
//得到总的用户数
$count = $data[&#39;c&#39;];

두 번째 작성 방법:

$page = isset($_GET[&#39;page&#39;]) ? (int) $_GET[&#39;page&#39;] : 1;

1-3, 마지막 페이지


각 페이지는 정수여야 합니다. 마치 초등학교 수학과 같습니다. 평균적으로 5.6명이 사과 몇개를 준비해야 합니다. 답은 6이어야 합니다.

페이지에 20.3페이지가 나타나면 반올림 기능 최대치를 사용해야 합니다. 페이지 매기기 수를 21로 설정합니다.

총 페이지 수를 각 페이지에 표시되는 데이터 항목 수로 나누어 총 페이지 수를 구합니다.

if (isset($_GET[&#39;page&#39;])) {
    $page = (int) $_GET[&#39;page&#39;];
} else {
    $page = 1;
}

1-4.상하페이지 제어가 이상해요


첫페이지에서 이전페이지를 클릭하고 마지막페이지에서 다음페이지를 클릭하면 어떻게 되나요?

이 경우 데이터가 범위를 초과하여 페이지를 매길 때 데이터가 표시되지 않습니다.

분명히 이러한 특이한 상황을 고려해야 합니다. 따라서 페이징 중에 첫 번째 페이지에서 1을 빼면 이를 첫 번째 페이지로 만듭니다.

마지막 페이지에 하나를 추가하면 마지막 페이지로 만들어주는데, 즉 예외처리가 완료됩니다.

//每页显示数
$num = 5;
$total = ceil($count / $num);

2. SQL문


앞서 페이징의 핵심은 SQL문의 오프셋과 num을 통해 페이지당 표시 수를 제어하는 ​​것이라고 말했습니다.

if ($page <= 1) {
    $page = 1;
}
if ($page >= $total) {
    $page = $total;
}

SQL 문에 $num 및 $offset을 적용합니다.

$num = 5;
$offset = ($page - 1) * $num;

URI에서 페이징 값을 제어합니다

$sql = "select id,username,createtime,createip from user order by id desc limit $offset , $num";

4. 전체 코드 구현

echo &#39;<tr>
    <td colspan="5">
    <a href="page.php?page=1">首页</a>
    <a href="page.php?page=&#39; . ($page - 1) . &#39;">上一页</a>
    <a href="page.php?page=&#39; . ($page + 1) . &#39;">下一页</a>
    <a href="page.php?page=&#39; . $total . &#39;">尾页</a>
    当前是第 &#39; . $page . &#39;页  共&#39; . $total . &#39;页
    </td>
    </tr>&#39;;

위 내용은 간단한 페이징 기능을 구현합니다. 더 많은 관련 콘텐츠를 보려면 PHP 중국어 웹사이트를 방문하세요: PHP 비디오 튜토리얼

위 내용은 PHP에서 페이징을 구현하는 원리와 단계의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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