페이징 기능 구현 방법LOGIN

페이징 기능 구현 방법

이전 장에서는 배경 콘텐츠 표시 HTML 페이지의 수정을 완료했습니다. 여기서는 SQL 문을 통해 데이터베이스 데이터를 쿼리하여 테이블에 표시해야 합니다. 여기에서는 페이징 기능을 사용하여 표시합니다. 결국 첫 페이지에 표시되는 숫자는 제한되어 있습니다.

소위 페이징 표시란 데이터베이스의 결과 세트를 표시할 섹션으로 인위적으로 나누는 것을 의미합니다. 여기에는 두 가지 초기 매개변수가 필요합니다.

페이지당 표시 수: $limitNews

현재 점수 가져오기 페이지 수: $page

컴퓨터 언어는 기본적으로 0부터 레코드를 얻기 시작하므로

페이지당 표시 수를 3으로 설정하면 $limitNews = 3,

첫 번째 페이지 $page = 1이 됩니다. 0, 1, 2 세 개의 레코드 표시

두 번째 페이지 $page = 2에는 세 개의 레코드 3, 4, 5가 표시됩니다

세 번째 페이지 $page = 3에는 세 개의 레코드 6, 7, 8

이 표시됩니다. . . . . . . . .

데이터 읽기를 시작할 $limitFrom 매개변수 설정

위의 규칙에서 다음을 얻을 수 있습니다.

$limitFrom = ($page - 1) * $limitNews;

0번째 및 3번째 데이터부터 시작됩니다. , 각각 6개 항목에서 데이터를 가져오기 시작합니다.

쿼리 문을 통해 데이터베이스 테이블의 총 뉴스 수를 가져옵니다. $countNews

<?php
$retQuery = mysqli_query($link, $sqlCount);  //查询数量sql语句
$retCount = mysqli_fetch_array($retQuery);   //获取数量
$count = $retCount[0]?$retCount[0]:0;   //判断获取的新闻数量
$countNews = $count;
?>

여기서 다른 매개 변수 $countPage를 제공해야 합니다. 총 표시되는 페이지 수

이제 10개가 있으면 또 다른 문제가 있습니다. 뉴스 기록, 각 페이지마다 3개의 기록이 표시되는데, 나머지 기록은 어떻게 해야 하나요?

판단하려면 나머지 %를 사용해야 합니다.

<?php
$countPage = $countNews%$limitNews;   //求余数获取分页数量能否被除尽
if(($countPage) > 0) {  //获取的页数有余
  $countPage = ceil($countNews/$limitNews);  
  
// ceil() 函数向上舍入为最接近的整数,除不尽则取整数+1页, 10个新闻每个页面显示3个,成3个页面,剩余1个单独成1个页面,这样总共有4个页面
} else {
  $countPage = $countNews/$limitNews;  //如果是9个新闻每个页面显示3个,成3个页面
}
?>

다른 매개변수는 이전 페이지의 경우 $prev이고 다음 페이지의 경우 $next입니다.

페이징 기능에서는 "이전 페이지"를 클릭하는 경우가 많습니다. 그리고 "다음 페이지" "한 페이지"로 점프

먼저 PHP 코드 기능을 구현하는 아이디어에 대해 이야기하겠습니다:

이전 페이지 $prev는 현재 페이지입니다. $page -1 이전 페이지 단계로 이동합니다 단계별로, 현재 페이지 $page가 첫 번째 페이지일 때, 현재 페이지 $page가 첫 번째 페이지일 때, "이전 페이지"를 클릭하여 설정하세요. 첫 번째 페이지로 표시되고 더 이상 앞으로 이동하지 않도록 설정하세요.

<?php
  $prev = ($page - 1 <= 0 )?1:$page-1;
?>

다음 페이지 $next는 현재 페이지 $page -1이며 단계별로 다음 페이지로 이동합니다. 문제는 $page가 마지막 페이지일 때 "다음 페이지"를 클릭한 다음 뒤로 이동한다는 것입니다. Follow 이전 페이지와 유사하게 마지막 페이지를 표시하도록 설정했습니다.

<?php
  $next = ($page + 1 > $countPage)?$countPage:$page+1;
?>

//현재 페이지 수가 전체 페이지 수보다 크면 현재 페이지가 표시됩니다.

<!DOCTYPE html>
<html>
<head>  
<meta charset=utf8">  
<title>分表页</title>
</head>
<body>
   <div>
         <a href="?page=<?php echo $prev;?>">|上一页</a>         
         <?php for($i=1; $i<=$countPage; $i++):?>         
         <a href="?page=<?php echo $i;?>"><?php echo $i;?></a>         
         <?php endfor;?>         
         <a href="?page=<?php echo $next;?>">|下一页</a>
   </div>
</body>
</html>

친구들은 데이터베이스

목록

테이블에 몇 가지 테스트 데이터를 추가하여 페이징 기능을 테스트할 수 있습니다.

while 문을 사용하여 데이터베이스의 데이터를 반복하고 list.php 파일에 표시합니다.

<?php while($rows=mysqli_fetch_array($result)):?>
<tr>
  <td style="text-align:left; padding-left:20px;">
  <input type="checkbox" name="id[]" value="<?php echo $rows["id"]?>" />
  <?php echo $rows["id"]?></td>
  <td><input type="text" name="sort[1]" value="1" style="width:50px; text-align:center; border:1px solid #ddd; padding:7px 0;" /></td>
  <td width="10%">
      <video width="200" height="150" controls="controls" >
          <source src="<?php echo $rows["video"]?>" type="video/mp4">
      </video>
  </td>
  <td><?php echo $rows["title"]?></td>
  <td><font color="#00CC99">首页</font></td>
  <td><?php echo $rows["cate_name"]?></td>
  <td><?php echo date("Y-m-d H:i:s",$rows["time"])?></td>
  <td>
      <div class="button-group">
          <a class="button border-main" href="#"><span class="icon-edit"></span>修 改</a>
          <a class="button border-red" href="#" onclick="return del(1,1,1)">
              <span class="icon-trash-o"></span>删 除
          </a>
      </div>
  </td>
</tr>
<?php endwhile;?>
참고: 여기에서는 날짜 함수를 사용하여 타임스탬프를 변환하고 일반 추가 시간으로 표시합니다.

rreee

다음 섹션
<!DOCTYPE html> <html> <head> <meta charset=utf8"> <title>分表页</title> </head> <body> <div> <a href="?page=<?php echo $prev;?>">|上一页</a> <?php for($i=1; $i<=$countPage; $i++):?> <a href="?page=<?php echo $i;?>"><?php echo $i;?></a> <?php endfor;?> <a href="?page=<?php echo $next;?>">|下一页</a> </div> </body> </html>
코스웨어