저번 수업에서 뉴스 목록 생성 기능에 대해 말씀드렸는데요, 지난 수업에서는 뉴스 목록 페이지 아래에 페이징 기능이 있었습니다! 그래서 오늘은 페이징 구현의 제작과정을 소개해드리겠습니다!
먼저 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>
OK! 페이지 매김이 완료되었습니다!
참고: 여기에서는 페이징 클래스를 다운로드하여 직접 호출할 수도 있습니다. 하지만 페이징 구현의 원리를 알아야 합니다~
다음 섹션