Blogger Information
Blog 33
fans 0
comment 0
visits 24424
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
分页逻辑与代码 20180910 23:00
EmonXu的博客
Original
572 people have browsed it

分页查询的原理:

总页数:首先应该获取到全部记录的行数,再除以每页要显示的行数,结果向上取整。

偏移量:查询时LIMIT两个参数:偏移量和行数。公式:偏移量=(页码-1)*每页显示的行数。

代码如下


实例

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

        form {
            display: inline;
        }
    </style>
</head>
<body>
<?php
//连接数据库获取到全部的记录
$pdo = new PDO('mysql:host=localhost;dbname=php','root','root');
//手工修改url中的get参数可以实现翻页查询
$page = isset($_GET['p']) ? $_GET['p'] : 1;
$offset = ($page-1)*5;

$sql = "SELECT * FROM `staff` LIMIT {$offset}, 5;";
$stmt = $pdo->prepare($sql);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
//查看返回结果

/**
 * 获取总页数分2步:
 * 1.获取总记录数
 * 2.再除以每次的显示数量,结果向上取整
 */
$stmt = $pdo->prepare("SELECT COUNT(*) FROM `staff`");
$stmt->execute();
$total = $stmt->fetchColumn(0);
$pages = ceil($total / 5);  //获取到总页数 $pages
?>

<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>
    <!--    当前是第一页的时候,上一页和首页链接应该不显示-->
    <?php if($page != 1): ?>
        <a href="http://xumeng.site/0910/作业.php?p=1">首页</a>
        <a href="http://xumeng.site/0910/作业.php?p=
<?php
        //    echo $page-1;//发现到第一页就挂掉了,怎么办?必须对$page=0进行控制
        echo (($page-1)==0)? 1 : ($page-1);
        ?>">上一页</a>
    <?php endif; ?>




    <!--生成中间页码-->
    <!--将当前页码的背景色锁定:当前页码等于GET中的参数p-->
    <?php for($i=1; $i<=$pages; $i++): ?>
        <a

            href="http://xumeng.site/0910/作业.php?p=<?php echo $i ?>"

            <?php
            echo ($i == $page) ? 'style="background-color: red;"' : '';
            ?>

        >

            <?php echo $i ?>

        </a>
    <?php endfor; ?>





    <!--当前已经是最后一页的时候,下一页和最后一页也应该不显示-->
    <?php if($page != $pages) :?>
        <a href="http://xumeng.site/0910/作业.php?p=
<?php
        //发现越界了,怎么办?最大页不能超过总页数才可以.
        echo (($page+1)>$pages)?$pages:($page+1);
        ?>">下一页</a>

        <a href="http://xumeng.site/0910/作业.php?p=<?php echo $pages; ?>">尾页</a>
    <?php endif; ?>


    <!--实现页面的快速跳转-->
    <form action="" method="get">
        第
        <select name="p" id="">

            <?php for($i=1; $i<=$pages; $i++): ?>
                <!-- 循环输出全部页码,并锁定当前页-->
                <option value="<?php echo $i; ?>"
                    <?php
                    if($page==$i){
                        echo 'selected';
                    }
                    ?>
                >
                    <?php echo $i; ?>
                </option>
            <?php endfor; ?>
        </select>
        页

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




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

运行实例 »

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


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