페이징 기능 구현 방법
이전 장에서는 배경 콘텐츠 표시 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;?>
참고: 여기에서는 날짜 함수를 사용하여 타임스탬프를 변환하고 일반 추가 시간으로 표시합니다.