페이징 기능 구현 방법

이전 장에서는 배경 콘텐츠 표시 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>
  • 코스 추천
  • 코스웨어 다운로드
현재 코스웨어를 다운로드할 수 없습니다. 현재 직원들이 정리하고 있습니다. 앞으로도 본 강좌에 많은 관심 부탁드립니다~
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!