Correction status:Uncorrected
Teacher's comments:
作业: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>
点击 "运行实例" 按钮查看在线实例