Blogger Information
Blog 35
fans 0
comment 0
visits 32598
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
网站分页:上一页、下一页,尾页、首页、中间的页数-2018-9-20
THPHP
Original
4094 people have browsed it

网站分页:

实例

<!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)*每页显示的数量。


Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post