美文网首页
老友记之PHP7留言板开发(分页)

老友记之PHP7留言板开发(分页)

作者: 科科分享 | 来源:发表于2018-07-30 07:32 被阅读0次

    之前查询留言记录的时候只是简单的记录输出,当留言人数多的时候怎么呢?一次性输出成千上百条记录是不现实的,第一用户体验差,第二影响服务器性能;所以这个时候就需要分页。

    • 关键词:LIMIT,本节运用到的知识点还是之前的SQL查询语句,在第二步骤中我们只需要将查询记录的SQL语句改造一下。
    <?php
     // 查询所有id=3的记录
    $sql = "SELECT * FROM feedback WHERE id = 3";
    
    // 查询前10条记录
    $sql = "SELECT * FROM feedback WHERE id = 3 LIMIT 0, 10";
    

    相信大家已经看出有什么不同了。

    效果图:
    每页一条记录,总共2条记录,共2页
    完整代码:
    <?php
    include 'config.php';
    
    $page = !empty($_GET['page'])?intval($_GET['page']):1;
    $pagesize = 1;
    
    // 统计总记录数,便于计算出总页数
    $sql = "SELECT * FROM feedback";
    $result = mysqli_query($mysqli, $sql);
    $total = mysqli_affected_rows($mysqli);
    $total_page = ceil($total/$pagesize); // 进一法取整获取总页数
    
    // 开始分页查询,根据page计算偏移量
    $offset = ($page - 1) * $pagesize;
    $sql = "SELECT * FROM feedback LIMIT {$offset}, {$pagesize}";
    $result = mysqli_query($mysqli, $sql);
    
    $lists = array();
    while($rows = mysqli_fetch_array($result)){
        $lists[] = $rows;
    }
    
    ?>
    <!DOCTYPE html>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <title>列表_留言板_科科分享</title>
            <!-- 2.新建css样式文件并根据效果图编写css代码 -->
            <link rel="stylesheet" href="feedback.css">
            
        </head>
        <body>
            <!-- 工作区,呈现给用户看的 -->
            <!-- 1.开始搭建脚手架 -->
            <div class="container_box">
                <div class="up">
                    <h3 class="title">留言板</h3>
                    <h5 class="subtitle">LIST</h5>
                </div>
                <div class="down list">
                    <ul>
                        <?php
                        foreach($lists as $item){
                        ?>
                        <li>姓名:<?php echo $item['name']?> 联系方式:<?php echo $item['contact']?> 内容:<?php echo $item['content']?></li>
                        <?php
                        }
                        ?>
                    </ul>
                    <div class="pages">
                        <ul>
                            <?php
                            for($p = 1; $p<=$total_page; $p++){
                            ?>
                            <li <?php echo ($page == $p)?'class="active"':'';?>><a href="?page=<?php echo $p?>"><?php echo $p?></a></li>
                            <?php
                            }
                            ?>
                        </ul>
                    </div>
                </div>
            </div>
        </body>
    </html>
    
    config.php
    <?php
    $localhost = '127.0.0.1';  // 数据库地址
    $user = 'root'; // 数据库用户名
    $password = 'root'; // 数据库密码
    $dbname = 'php_course'; // 数据库名
    
    $mysqli = mysqli_connect($localhost, $user, $password, $dbname);
    if(mysqli_connect_errno()){
        echo '连接数据库失败:'.mysqli_connect_error();
        exit;
    }
    mysqli_query($mysqli, "SET NAMES UTF8");
    
    feedback.css新增分页样式
    /* 分页 */
    .pages{margin: 0 auto;}
    .pages ul{list-style: none;}
    .pages ul li{padding: 0 8px; border: 1px solid #e1e1e1;float: left;display: block;margin:0 4px;}
    .pages ul li.active{background-color: #63637f;}
    .pages ul li.active a{color: #fff;}
    
    • 分页的要点在于计算总页码数及计算分页偏移量;

    这里要说明一下的是偏移量(每一页的分界记录数),比如每页显示10条,那么第一页的偏移量就是0,第二页是10,第三页是20,以此类推;
    得出公式就是(当前页数-1)* 每页显示记录数;
    正如我们所看到的 $offset = ($page - 1) * $pagesize;

    • 值得注意的是三元运算符echo ($page == $p)?'class="active"':'';相当于if($page == $p){echo 'class="active"';}else{echo '';}

    • 最后只需把查询出来的数据集输出展示出来了。还是那句话,如果想要掌握记得要动手试试,实践是验证真理的最好方法。如有什么讲解错误或者不明白的地方,欢迎留言!

    相关文章

      网友评论

          本文标题:老友记之PHP7留言板开发(分页)

          本文链接:https://www.haomeiwen.com/subject/lsrxvftx.html