Blogger Information
Blog 55
fans 0
comment 0
visits 50383
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP-分页查询常规方法-0910
Bean_sproul
Original
919 people have browsed it

 * 分析分页的原理:
1. LIMIT 参数的作用: 偏移量与显示数量
2. 如果控制每页显示的数量
3. 接收GET参数,用p表示当前页数
4. 需要的参数:
(1).totalPage 总页数
(2).totalNumber 一共有多少条数据
(3).pageSize 每页显示多少条数据
(4)currentPage 当前第几页
(5)*.rangeStart 起始页
(6)*.rangeEnd 末页
 5. 当前偏移量的计算公式: (页数-1)*每页显示的数量
 *    offset = (page-1)*num

实例

实例

<!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 
        //连接数据库查询所有记录
        $link =new PDO('mysql:host=127.0.0.1;dbname=php','root','root');
        //手工修改url中的get参数实现翻页查询
        $page = isset($_GET['p']) ? $_GET['p'] : 1;//检测
        //设定偏移量+数据查询方法
        $offset =($page-1)*5;
        $sql = "SELECT * FROM `news` LIMIT {$offset}, 5;";//每页显示5

        $stmt = $link->prepare($sql);//准备要执行的SQL语句
        $stmt->execute();//执行一条预处理语句
        $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);//返回一个包含结果集中所有行的数组

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

<!-----------------视图显示部分-------------------->
	<table>
    <caption>员工信息表</caption>
    <tr>
        <th>ID</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['money']; ?></td>
        </tr>
    <?php endforeach;?>
</table>
<h3>
    <!--    当前是第一页的时候,上一页和首页链接应该不显示-->
    <?php if($page != 1): ?>
        <a href="http://127.0.0.1/0910/php.php?p=1">首页</a>
        <a href="http://127.0.0.1/0910/php.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<=$page; $i++): ?>
        <a href="http://127.0.0.1/0910/php.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://127.0.0.1/0910/php.php?p=
<?php
        //发现越界了,怎么办?最大页不能超过总页数才可以.
        echo (($page+1)>$pages)?$pages:($page+1);
        ?>">下一页</a>

        <a href="http://127.0.0.1/0910/php.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