留言板新增分页功能

阅读数:762 发布时间:2016-06-09 23:45:00

作者:mj001 标签: php MySQL 分页 马骏001

php留言板功能做完后,还存在一个问题,就是留言数量变多后,需要鼠标滚动很长的一段距离,这样用户体验不好,所以决定新增加一个功能:
翻页。

我们需要分析一下怎么实现这样一个功能。

需求分析

需求点很明确,每页显示五条一级数据。

具体分析包含了下面三个方面:

取出所有的一级数据

要取出所有一级数据,也就是所有fid=0的数据。

计算页数

页数 = 取出的所有数据数 / 每页显示的条数。

不能整除的时候,比如说24条数据,24/5得到的数据我们需要向上取整,也就是显示5页。

每一页显示5条数据

这一步关键就是考验sql语句的使用,筛选特定的数据进行显示。

具体实施步骤

取数据

$sql_getall = "select * from comments where fid=0";

首先我们要取出所有fid=0的数据,也就是一级数据,拿出来它才能计算出所需要的页数。

$DB = new mysql("192.168.0.105", 'root', "111111", "mjdb", "conn", "utf8");
$DB->longquery($sql_getall);
$rs_all = $DB->get_assoc_result();
$total_num = count($rs_all);

变量$total_num中存放的就是取出的数据条数。

算页数

$total_page = ceil($total_num/5);

这里用到了向上取整的方法ceil( ),$total_num是刚刚取出的数据量,5是控制每页显示的数量,这就得出了一共需要的页数。

筛选数据

数据取出来,页数也算出来了,剩下的就是要实现怎么在每一页只显示5条数据。

$sql_getfive = "select * from comments where fid = 0 limit ".$page_list_from.",5";

这句sql的意思就是从comments表中选择fid为0的数据,并且要从第n页开始取5条数据。 注意这里有一个变量$page_list_from,这表示的是第几页的取数据,也就是页数。

$page_list_from = ($page-1)*5;

到这里我们数据差不多也都取出来了,现在需要将它显示到页面中。
依然要用到递归,不过这里的递归和不加分页的几乎一模一样,也就多加了一个$page参数而已。

f($rows>0){
        $dep++;
        for ($i=0; $i < $dep; $i++) {
            $str .= "--------";
        }
        for ($i=0; $i < $rows ; $i++) {
            echo $str.$rs_five[$i]['comments']."'<a href='oper.php?action=del&page=".$page."&id=".$rs_five[$i]['id']."'>删除</a>
             <a href='comments.php?page=".$page."&id=".$rs_five[$i]['id']."'>reply</a><br>";
            echo go($rs_five[$i]['id'], $dep);
        }
    }

在url跳转的时候,也需要将$page参数同时传递,不然会引起页面跳转错乱。

补充

说了半天,也没有提到分页导航怎么弄,主要就是通过列表里加链接的方式,根据页数循环出来,

echo "<div class='pager'><ul>";
for ($i=1; $i < $total_page+1; $i++) {
    echo "<li><a href='comments.php?page=".$i."'>".$i."</a></li>";
}
echo"</ul></div>";

相关文章推荐: