博客列表 >网站分页:上一页、下一页,尾页、首页、中间的页数-2018-9-20

网站分页:上一页、下一页,尾页、首页、中间的页数-2018-9-20

THPHP
THPHP原创
2018年09月20日 08:37:294096浏览

网站分页:

实例

<!doctype html>
<html lang="en">
<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>
        .header{
            width: 800px;
            margin:50px auto;
        }
        table,th,td{
            border: 1px solid black;
        }
        table th {
            background-color: lightskyblue;
            height:35px;
        }
        table{
            width:100%;
            border-collapse:collapse;
            text-align:center;
        }
        table caption {
            font-size: 1.5rem;
            margin-bottom: 15px;
        }
        table tr td{
            height:35px;
        }
        table tr{
            cursor:pointer;
        }
        table tr:hover{
            background:lightslategrey;
        }
        h3 a{
            text-decoration:none;
            color:#555;
            font-size:16px;
            float:left;
            padding:5px 10px;
        }
        h3 a:hover{
            color:olive;
        }

    </style>
</head>
<body>
<?php
// 连接数据库
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');
// 页数公式
$page = isset($_GET['p']) ? $_GET['p'] : 1;
$offset = ($page - 1)*10;
// 查询语句
$sql = "SELECT * FROM `staff` LIMIT {$offset}, 10;";
//预处理对象
$stmt = $pdo -> prepare($sql);
// 执行
$stmt->execute();
// 获取记录数
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 获取总数据
$stmt = $pdo->prepare("SELECT COUNT(*) FROM `staff`");
//执行
$stmt->execute();
// 获取数据记录数
$total = $stmt->fetchColumn(0);
//向上取整
$pages = ceil($total / 10);
?>
<!--
// 获取数据
    1、连接数据库:$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');
    2、编写页面数据(查询公式):$page = isset($_GET['p']) ? $_GET['p'] : 1;
    3、创建预处理对象:$stmt = $pdo -> prepare($sql);
    4、执行sql语句:$stmt->execute();
    5、获取数据:$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
    6、使用foreach遍历到表格中:foreach($rows as $row)

// 实现分页
1、执行查询语句:$stmt = $pdo->prepare("SELECT COUNT(*) FROM `staff`");
2、执行->获取所有数据->向上取整:$stmt->execute();$total = $stmt->fetchColumn(0);$pages = ceil($total / 10);
3、中间代码和页面快速跳转:for循环遍历:for($i = 1;$i <=$pages;$i++)
4、上一页,下一页使用,三元判断:上一页:(($page-1) ==0 ? 1 : ($page-1))。下一页:(($page+1) > $pages ? $pages : ($page+1))
-->
<div class="header">
    <table>
        <caption>员工信息表</caption>
        <tr>
            <th>ID</th>
            <th>姓名</th>
            <th>年龄</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['age']?></td>
                <td><?php echo $row['sex'] ? '男' : '女'; ?></td>
                <td><?php echo $row['salary']?></td>
            </tr>
        <?php endforeach;?>
    </table>
    <h3>
        <!--  首页 -->
        <a href="http://php.top/fenye/demo.php?p=1">首页</a>
        <!--  上一页-->
        <a href="http://php.top/fenye/demo.php?p=<?php echo (($page-1) ==0 ? 1 : ($page-1)); ?>">上一页</a>
        <!--  中间代码-->
        <?php for($i = 1;$i <=$pages;$i++): ?>
            <a href="http://php.top/fenye/demo.php?p=<?php echo $i ?>" <?php echo ($i == $page) ? 'style="border:1px solid #ccc;color:lightskyblue;"' : ''; ?>><?php echo $i ?></a>
        <?php endfor; ?>
        <!--  下一页-->
        <a href="http://php.top/fenye/demo.php?p=<?php echo (($page+1) > $pages ? $pages : ($page+1)); ?>">下一页</a>
        <!--  尾页-->
        <a href="http://php.top/fenye/demo.php?p=<?php echo $pages ; ?>">尾页</a>
        <!--页面快速跳转-->
        <form action="" method="get">
            <select name="p" id="">
                <?php for($i = 1 ; $i <= $pages; $i++): ?>
                    <!--  if($page == $i){echo 'selected';} 把页码显示被选中的状态  -->
                    <option value="<?php echo $i; ?>"<?php if($page == $i){echo 'selected';} ?>><?php echo $i; ?></option>
                <?php endfor; ?>
            </select>
            <button>跳转</button>
        </form>
    </h3>
</div>
</body>
</html>

运行实例 »

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

分页查询的原理:

获取get参数:url?p=6

到数据库获取数据的总数据

每页要显示多少条数据

当前第是几页

起始页

末页

获取偏移量公式:(页数-1)*每页显示的数量(offset = (page-1)*num)

偏移量计算:

$sql = "SELECT * FROM `staff` LIMIT 0, 10;"; 这条语句的意思是:从第0数据开始到第十个数据结束,如果搜索下一页,那就要改变 0 的数字:计算公式: (页数-1)*每页显示的数量。


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