페이지에 모든 사용자 댓글을 표시하고 페이징을 통해 표시합니다.
페이징의 일반적인 개념은 먼저 각 페이지에 표시해야 하는 메시지 수를 결정하고, 총 메시지 수를 각 페이지에 표시되는 메시지 수로 나누어 총 페이지 수를 구하는 것입니다. 균등하게 나눌 수 없는 경우 나머지 페이지는 별도의 페이지가 되며 전체 페이지 수는 +1됩니다.
이전 섹션에서 설정한 데이터베이스의 LyDB 클래스를 계속 사용하세요.
여기서는 페이지당 3개의 데이터를 표시하도록 설정되어 있습니다
<?php $page_size=3; ?>
공개 함수를 사용하여 각 페이지에 표시되는 page_size 수, 메시지 수 ly_count 및 총 페이지 수 page_count를 배열 array에 넣습니다
<?php class LyDb{ //....省略 public function select_page_info(){ $sql = "select count(*) as pagecount from ly"; $query = mysqli_query($this->link,$sql); $row = mysqli_fetch_assoc($query); $ly_count=$row["pagecount"]; $page_count=($ly_count%$this->page_size==0)?($ly_count/$this->page_size):($ly_count/$this->page_size+1); $page_info=array("ly_count"=> $ly_count,"page_count"=>(int)$page_count,"page_size"=>$this->page_size); return $page_info; } //......省略 } ?>
공개 함수를 사용하여 현재 페이지를 설정하세요. $page_no
현재 페이지가 1개 미만이라고 판단되면, 현재 페이지가 획득한 총 페이지 수보다 크면 첫 번째 페이지를 계속 표시합니다. 마지막 페이지가 표시됩니다
첫 번째 페이지와 마지막 페이지를 결정하세요
<?php lass LyDb{ //....省略 public function select_page_result(&$page_no){ $page_info=$this->select_page_info(); if(!isset($page_no))$page_no=1; else if($page_no<1)$page_no=1; else if($page_no>$page_info["page_count"])$page_no=$page_info["page_count"]; $first=($page_no-1)*$this->page_size; $sql="select * from ly order by id desc limit $first,$this->page_size "; $query=mysqli_query($this->link,$sql); $page_result=array("page_data"=>$query,"page_info"=>$page_info,"page_no"=>$page_no); return $page_result; } //......省略 } ?>
프런트 엔드 페이지에 페이징 기능 추가
<div class="pagination" > 当前第<?php echo $page_result["page_no"];?>页/ 共<?php echo $page_result["page_info"]["page_count"];?>页/ 每页显示<?php echo $page_result["page_info"]["page_size"]; ?>条/ 共<?php echo $page_result["page_info"]["ly_count"]; ?>条留言 <a href="index.php?pn=<?php echo ($page_result['page_no']-1);?>">上一页</a> <a href="index.php?pn=<?php echo ($page_result['page_no']+1);?>">下一页</a> <a href="index.php?pn=1">首页</a> <a href="index.php?pn=<?php echo ($page_result['page_info']['page_count']);?>">尾页</a> </div>다음 섹션