博客列表 >0910作业:实战分页查询

0910作业:实战分页查询

Samoye
Samoye原创
2018年09月16日 23:31:53563浏览

作业: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>

运行实例 »

点击 "运行实例" 按钮查看在线实例


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议