批改状态:未批改
老师批语:
作业:1问答:分页查询的原理与偏移量的计算方法
实现分页主要是利用SQL中的limit的关键字,它有两个参数limit [offset] listNO.
第一个参数offset是偏移量,我称为查询的起始位置,第二参数listNO.是从起始位开始计算,显示在页面的数量
这样每次从新的起始位置开始,显示相同的数量就实现了分页。
起始位置计算的方法:(当前页的页码-1) * (要在每个页面显示的数量)
作业2:编程: 实现分页查询,要求有上一下,下一页,直接跳到首页和尾页,中间页的生成,以及快速页码跳转功能
<?php
/**
* 在手工分页的基础上,添加上一页,下一页,首页等快捷按钮
*/
$pdo= new PDO('mysql:host=localhost;dbname=stu','root','root');
//实现分页,先获得当前页码 这句代码太有意思了:可以自动设置一个变量(isset),如果url有current_page 变量就使用这个变量,没有则设置一个,并赋值为1
$pageno = isset($_GET['current_page'])?$_GET['current_page']:1;//如果在URL中有current_page,则使用当前页码赋值,没有则赋值1
//计算起始位置
$startset = ($pageno - 1)*4; //每页显示数量是4
$sql ="SELECT * FROM `student` LIMIT {$startset},4";
$stmt = $pdo->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
//测试是否连接查询成功
//echo '<pre>'.print_r($result,true).'</pre>';
//为了实现尾页导航,必须获取总页数
$stmt = $pdo->prepare("select count(*) from student"); //统计记录数
$stmt->execute();
//获取首行首列的数据
$row_total = $stmt->fetchColumn(0);
$page_total = ceil($row_total/4); //向上取整,获得总页数
?>
<!--//把查询结果弄到表格里去-->
<!doctype html>
<html lang="zh_cn">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>手工分页查询</title>
<style>
table,th,td {
border: 1px solid lightgray;
}
table {
border-collapse:collapse;
width:60%;
margin: 30px auto;
text-align: center;
}
table caption {
font-size: 20px;
margin-bottom: 15px;
}
table tr:first-child{
background-color: lightblue;
}
h4 {
text-align: center;
}
h4 a {
text-decoration: none;//去掉链接的下划线
margin-left: 15px;
display: inline-block;
/* border: 1px solid black;*/
/* height: 35px;*/
/* width: 40px;*/
padding: 10px;
/*background-color: lightgreen;*/
}
h4 a:hover{
background-color: #666666;
color:white;
}
form {
display:inline;
}
</style>
</head>
<body>
<table>
<caption>奖学金信息表</caption>
<tr>
<th>学号</th>
<th>姓名</th>
<th>性别</th>
<th>班级</th>
<th>奖学金</th>
<th>地址</th>
</tr>
<?php foreach ($result as $row): ?>
<tr>
<td><?php echo $row['id']?></td>
<td><?php echo $row['name']?></td>
<td><?php echo $row['sex']?></td>
<td><?php echo $row['class']?></td>
<td><?php echo $row['bursary']?></td>
<td><?php echo $row['address']?></td>
</tr>
<?php endforeach; ?>
</table>
<h4>
<a href="http://js.net/0910/page_select.php?current_page=1">首 页</a>
<a href="http://js.net/0910/page_select.php?current_page=<?php echo ($pageno-1==0)?1:($pageno-1);?>">上一页</a>
<!-- 生成中间页面-->
<!-- 用循环生成中间页 -->
<?php for ($i=1; $i<=$page_total; $i++): ?>
<a href="http://js.net/0910/page_select.php?current_page=<?php echo $i ?>" <?php echo ($i==$pageno) ? 'style="font-size:30px;box-shadow:5px 5px 5px #888888;border-radius:100%;"':'';?> > <?php echo $i;?></a>
<!--//添加个锁定聚焦 如果当前页和循环页面相等则添加个样式-->
<?php endfor; ?>
<a href="http://js.net/0910/page_select.php?current_page=<?php echo (($pageno+1)>$page_total)?$page_total:($pageno+1);?>">下一页</a>
<a href="http://js.net/0910/page_select.php?current_page=<?php echo $page_total;?>">尾 页</a>
<!--生成一个快选按钮-->
<form action="" method="get">
第 <select name="current_page" id=""> //把变量name 提交给当前页
<?php for ($i=1;$i<=$page_total;$i++): ?>
//把选择的值传递给当前页 组成current_page=$i 的页面
<option value="<?php echo $i ?>"<?php
if($pageno==$i){
echo 'selected'; //在页面上显示选定的页码显示
}
?>><?php echo $i ?>
</option>
<?php endfor;?>
</select>页
<button>跳转</button>
</form>
</h4>
</body>
</html>点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号