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

2018-07-30  本文已影响0人  科科分享

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

<?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;

上一篇下一篇

猜你喜欢

热点阅读