博主信息
博文 39
粉丝 0
评论 0
访问量 37398
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
分页查询设计原理与实例 : 重点offse偏移量的设置规范 2018年9月10日 22:05
南通税企通马主任的博客
原创
850人浏览过

1 , 分页查询的原理与偏移量的计算方法

根据理解 , offset设置偏移量原理是需要查询的页数减一再乘以自己需要每页做显示的数量 ;

即offset有两个参数 ,第一个是偏移量 $page - 1 , 第二个是需要显示的数量 $num ;

当然分页查询还需要其它的相关条件 , 包括总数量 , 页数 , 中间页码显示值 ;

其中中间页面用 for 语句遍历出来即可 for & endfor , 条件是 $i =1; $i <=总页数$pages ; $i++ ;

2 , 编程 : 实现分页查询,要求有上一下,下一页,直接跳到首页和尾页,中间页的生成,以及快速页码跳转功能

实例分类查询页

<?php
namespace model;


class Page
{
    private $offset;

    private $num;

    private $pdo;

    public function __construct($num=3)
    {
        $this ->num = $num;

        $this ->offset = ($this ->getPage()-1) * $this ->num;
    }

    public function connect($type,$host,$dbname,$user,$pass)
    {
        try{
            $this ->pdo = new \PDO("$type:host=$host;dbname=$dbname",$user,$pass);
        }catch(\PDOException $e){
            die($e ->getMessage());
        }
    }

    public function getPage()
    {
        return isset($_GET['p']) ? $_GET['p'] : 1;
    }

    public function getPages($table)
    {
        $stmt = $this ->pdo ->prepare("SELECT COUNT(*) FROM {$table}");
        $stmt ->execute();

        $total = $stmt ->fetchColumn(0);
        return ceil($total / $this ->num);
    }

    public function getData($table)
    {
        $sql = "SELECT * FROM {$table} LIMIT {$this ->offset} , {$this ->num}";
        $stmt = $this ->pdo ->prepare($sql);
        $stmt ->execute();

        return $stmt ->fetchALL(\PDO::FETCH_ASSOC);
    }
}

实例CSS样式页

table,th,td {
    border: 1px solid black;
}
table th {
    background-color: lightskyblue;
}
table {
    border-collapse: collapse;
    width: 70%;
    margin: 30px auto;
    text-align: center;
}

table caption {
    font-size: 1.5rem;
    margin-bottom: 15px;
}

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;
}

.active {
    background-color: red;
}

form {
    display: inline;
}

实例分页查询首页

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="style.css">
    <title>分页查询</title>
</head>
<body>
<?php
require 'Page.php';

use model\Page;

$page = new Page();

$page ->connect('mysql','127.0.0.1','php','root','root');

$currentPage = $page ->getPage();

$totalPages = $page ->getPages('staff');

$data = $page ->getData('staff');
?>
<table>
    <caption>员工信息表</caption>
    <tr>
        <th>ID</th>
        <th>姓名</th>
        <th>年龄</th>
        <th>性别</th>
        <th>工资</th>
    </tr>
    <?php foreach ($data as $row): ?>
        <tr>
            <td><?php echo $row['id']; ?></td>
            <td><?php echo $row['name']; ?></td>
            <td><?php echo $row['age']; ?></td>
            <td><?php echo $row['sex']?'男':'女'; ?></td>
            <td><?php echo $row['salary']; ?></td>
        </tr>
    <?php endforeach;?>
</table>

<h3>
    <!--    当前是第一页的时候,上一页和首页链接应该不显示-->
    <?php if($currentPage != 1): ?>
        <a href="task.php?p=1">首页</a>
        <a href="task.php?p=<?php echo $currentPage-1; ?>">上一页</a>
    <?php endif; ?>


    <!--生成中间页码-->
    <?php for($i=1; $i<=$totalPages; $i++): ?>
        <!------高亮显示当前页码----------->
        <a class="<?php if($currentPage==$i){echo 'active';}?>" href="task.php?p=<?php echo $i ?>"><?php echo $i ?></a>
    <?php endfor; ?>

    <!--当前已经是最后一页的时候,下一页和最后一页也应该不显示-->
    <?php if($currentPage != $totalPages) :?>
        <a href="task.php?p=<?php echo $currentPage+1; ?>">下一页</a>

        <a href="task.php?p=<?php echo $totalPages; ?>">尾页</a>
    <?php endif; ?>

    <!--实现页面的快速跳转-->
    <form action="" method="get">
        第
        <select name="p" id="">
            <?php for($i=1; $i<=$totalPages; $i++): ?>
                <!-- 循环输出全部页码,并锁定当前页-->
                <option value="<?php echo $i; ?>" <?php if($currentPage==$i){echo 'selected';} ?>><?php echo $i; ?></option>
            <?php endfor; ?>
        </select>
        页

        <button>跳转</button>
    </form>

</h3>
</body>
</html>

运行实例 »

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

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学