批改状态:合格
老师批语:
1问答:分页查询的原理与偏移量的计算方法
分析分页的原理:
首先获取数据的总记录数,通过总记录和每页显示的数量得出总页数。
* 1. LIMIT 参数的作用: 偏移量与显示数量
* 2. 如果控制每页显示的数量
* 3. 接收GET参数,用p表示当前页数,每页显示3条
* 4. 需要的参数:
* (1).totalPage 总页数
* (2).totalNumber 一共有多少条数据
* (3).pageSize 每页显示多少条数据
* (4)currentPage 当前第几页
* (5)*.rangeStart 起始页
偏移量的计算公式: (页数-1)*每页显示的数量
* offset = (page-1)*num
2编程: 实现分页查询,要求有上一页,下一页,直接跳到首页和尾页,中间页的生成,以及快速页码跳转功能




<!DOCTYPE html>
<html>
<head>
<title>用户信息表</title>
<meta charset="utf-8">
<style>
table,th,td{border: 1px solid black;}
table {
border-collapse: collapse;
width: 60%;
margin: 30px auto;
text-align: center;
}
table caption {font-size: 1.5rem;margin-bottom: 15px;}
table th {background-color: lightskyblue;}
h3 {text-align: center;}
h3 a {
text-decoration: none;
margin-left: 10px;
border: 1px solid black;
display: inline-block;
height: 30px;
min-width: 30px;
padding: 0 10px;
background-color: lightgreen;
}
h3 a:hover{background-color: red;color: white;}
form {display: inline;}
</style>
</head>
<body>
<?php
$pdo = new PDO('mysql:host=127.0.0.1;dbname=edu','root','root');
//手工修改url中的get参数可以实现翻页查询
$page = isset($_GET['p']) ? $_GET['p'] : 1;
$offset = ($page-1)*5;
$sql = "SELECT * FROM `user` LIMIT {$offset}, 5;";
$stmt = $pdo->prepare($sql);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt = $pdo->prepare("SELECT COUNT(*) FROM `user`");
$stmt->execute();
$total = $stmt->fetchColumn(0);
$pages = ceil($total / 5); //获取到总页数 $pages
?>
<table>
<caption>员工信息表</caption>
<tr>
<th>ID</th>
<th>姓名</th>
<th>邮箱</th>
</tr>
<?php foreach ($rows as $row): ?>
<tr>
<td><?php echo $row['id']; ?></td>
<td><?php echo $row['name']; ?></td>
<td><?php echo $row['email']; ?></td>
</tr>
<?php endforeach; ?>
</table>
<h3>
<a href="http://www.ceshi.com/ceshi1.php?p=1">首页</a>
<a href="http://www.ceshi.com/ceshi1.php?p=<?php echo (($page-1)==0)? 1 : ($page-1); ?>">上一页</a>
<!-- <a href="http://www.ceshi.com/ceshi1.php?p=1">1</a>
<a href="http://www.ceshi.com/ceshi1.php?p=2">2</a>
<a href="http://www.ceshi.com/ceshi1.php?p=3">3</a> -->
<!--生成中间页码-->
<!--将当前页码的背景色锁定:当前页码等于GET中的参数p-->
<?php for($i=1; $i<=$pages; $i++): ?>
<a
href="http://ceshi.com/ceshi1.php?p=<?php echo $i ?>"
<?php
echo ($i == $page) ? 'style="background-color: red;"' : '';//设置被选中的当前页突出显示
?>
>
<?php echo $i ?>
</a>
<?php endfor; ?>
<a href="http://www.ceshi.com/ceshi1.php?p=<?php echo (($page+1)>$pages)?$pages:($page+1); ?>">下一页</a>
<a href="http://www.ceshi.com/ceshi1.php?p=<?php echo $pages; ?>">尾页</a>
<!--实现页面的快速跳转-->
<form action="" method="get">
第 <select name="p" id="">
<?php for($i=1; $i<=$pages; $i++): ?>
<!-- 循环输出全部页码,并锁定当前页-->
<option value="<?php echo $i; ?>"
<?php
if($page==$i){echo 'selected';}
//实现跳转后当前页面和选中页码一样。不要这段代码依然可以正常工作,不过跳转后会显示默认选项
?>
>
<?php echo $i; ?>
</option>
<?php endfor; ?>
</select>页
<button>跳转</button>
</form>
</h3>
</body>
</html>点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号