PHP 기본 개발 뉴스 방송국 뉴스 목록 페이지 매김

저번 수업에서 뉴스 목록 생성 기능에 대해 말씀드렸는데요, 지난 수업에서는 뉴스 목록 페이지 아래에 페이징 기능이 있었습니다! 그래서 오늘은 페이징 구현의 제작과정을 소개해드리겠습니다!

먼저 PHP 파일 page.php를 만듭니다. 이 파일에 페이지 매김 생성을 위한 코드를 넣습니다!

첫 번째 단계: 동일하게 데이터베이스에 연결합니다!

// 显示所有的错误
error_reporting(E_ALL & ~E_NOTICE  );
// 连接mysql数据库
$link = mysqli_connect('localhost','root', 'root');
if (!$link) {
    echo "connect mysql error!";
    exit();
}
// 选中数据库 news为数据库的名字
$db_selected = mysqli_select_db($link, 'news');
if (!$db_selected) {
    echo "<br>selected db error!";
    exit();
}
// 设置mysql字符集 为 utf8
$link->query("set names utf8");

두 번째 단계: 페이징 기능을 구현하려면 어떤 목록에 어떤 데이터 테이블이 있는지 쿼리해야 합니다. 따라서 우리의 SQL 문은 뉴스 테이블을 확인해야 합니다.

// 查询新闻表中的数据
$sql = "select * from new where 1 "; // 查询语句
$sql_count =  "select count(*) as amount from new where 1 "; // 统计总记录数
$sql .= "order by id asc";

그런 다음 총 레코드 수를 가져와야 합니다. :

// 获取总记录条数
$result_amount = mysqli_query($link, $sql_count);
$arr_amount = mysqli_fetch_array(mysqli_query($link, $sql_count), MYSQL_ASSOC);
// 总记录条数
$amount = $arr_amount['amount'];

그런 다음 총 페이지 수와 총 페이지 수를 설정하세요

// 每页的记录条数
$page_size = 4;
// 总页码
$max_page = ceil( $amount / $page_size );

페이징에 대한 수식 알고리즘이 있다는 것은 누구나 알고 있습니다. 이 수식을 사용하여 이전 페이지, 다음 페이지, 마지막 페이지를 계산합니다!

// 获取当前页码
$page = intval($_GET['page']); // 获取page值,并转成int
if( $page <= 0 || $page > $max_page){  // 如果page值小于0,或是大于最大页码
    $page = 1;
}
// 上一页
$pre_page = $page -1;
if( $pre_page < 1 ){ // 如果上一页小于1
    $pre_page = 1;
}

// 下一页
$next_page = $page + 1;
if( $next_page > $max_page ){ // 如果下一页大于最大页码
    $next_page = $max_page;
}
// 分页计算, 计算分页的offset
$offset = ($page - 1 ) * $page_size;
$sql .= " limit $offset, $page_size ";

여기서 페이징 코드가 완성되고, 뉴스 목록 페이지에 이 페이징 파일을 도입합니다

<?php
include_once "../common/page.php";
?>

마지막으로 뉴스 목록 페이지 아래에서 페이징 위치를 찾아 페이징을 출력

<div class="pagelist">
<a href="new_list.php">首页</a>
<?php
if( $page > 1 ){
    ?>
    <a href="new_list.php?page=<?php echo $pre_page;?>">上一页</a>
    <?
}
if( $page < $max_page ){
    ?>
    <a href="new_list.php?page=<?php echo $next_page;?>">下一页</a>
    <?
}
?>
<a href="new_list.php?page=<?php echo $max_page;?>">末页</a>
/  总页码 <font color="red"><?php echo $max_page;?></font>页 当前页码 <font color="red"><?php echo $page;?></font>页
</div>

1741.png

OK! 페이지 매김이 완료되었습니다!

참고: 여기에서는 페이징 클래스를 다운로드하여 직접 호출할 수도 있습니다. 하지만 페이징 구현의 원리를 알아야 합니다~

지속적인 학습
||
<?php // 显示所有的错误 error_reporting(E_ALL & ~E_NOTICE ); // 连接mysql数据库 $link = mysqli_connect('localhost','root', 'root'); if (!$link) { echo "connect mysql error!"; exit(); } // 选中数据库 news为数据库的名字 $db_selected = mysqli_select_db($link, 'news'); if (!$db_selected) { echo "<br>selected db error!"; exit(); } // 设置mysql字符集 为 utf8 $link->query("set names utf8"); // 查询简历表中的用户信息 $sql = "select * from new where 1 "; // 查询语句 $sql_count = "select count(*) as amount from new where 1 "; // 统计总记录数 $sql .= "order by id asc"; // 获取总记录条数 $result_amount = mysqli_query($link, $sql_count); $arr_amount = mysqli_fetch_array(mysqli_query($link, $sql_count), MYSQL_ASSOC); // 总记录条数 $amount = $arr_amount['amount']; // 每页的记录条数 $page_size = 4; // 总页码 $max_page = ceil( $amount / $page_size ); // 获取当前页码 $page = intval($_GET['page']); // 获取page值,并转成int if( $page <= 0 || $page > $max_page){ // 如果page值小于0,或是大于最大页码 $page = 1; } // 上一页 $pre_page = $page -1; if( $pre_page < 1 ){ // 如果上一页小于1 $pre_page = 1; } // 下一页 $next_page = $page + 1; if( $next_page > $max_page ){ // 如果下一页大于最大页码 $next_page = $max_page; } // 分页计算, 计算分页的offset $offset = ($page - 1 ) * $page_size; $sql .= " limit $offset, $page_size "; ?>
  • 코스 추천
  • 코스웨어 다운로드
현재 코스웨어를 다운로드할 수 없습니다. 현재 직원들이 정리하고 있습니다. 앞으로도 본 강좌에 많은 관심 부탁드립니다~
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!