PHP入门(16) 使用mysqli实现简单的分页

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP入门(16) 使用mysqli实现简单的分页相关的知识,希望对你有一定的参考价值。

前几天正好学习了如何使用php自带的api操作mysql数据库,正好拿一下分页这个小案例练一下手。


关于分页的算法有很多,这里仅仅介绍很简单的一种。


分页的原理:

首先获得总共含有多少行$row_num,总行数除以每页的行数$page_size,向上取整得到总共有多少页$page_num。

容易得到第page页的第一条记录是整张表的第($page-1)*page_size条记录,记为$offset   

(注意:行索引是从0开始的)

然后应用mysql的limit关键字 获取每一页的记录结果显示出来即可。

select * from test limit offset, page_size;

 

具体实现代码:两个文件conn.php indes.php

技术分享

/*conn.php*/
<?php
$mysqli = new mysqli("localhost","root","123456","mydb") or die("数据库连接失败!".$mysqli->errno);
/*index.php*/
<?php
include_once("conn/conn.php");
$page = $_GET["page"];
if($page == ""){
    $page = 1;
}
if(is_numeric($page)) {
    $page_size = 4;
    $res = $mysqli->query("select * from test");
    $row_count = $res->num_rows;
    $page_num = ceil($row_count / $page_size);
    $offset = ($page - 1) * $page_size;
    $res = $mysqli->query("select * from test limit $offset,$page_size");
    while ($row = $res->fetch_assoc()) {
        echo "<table><tr>";
        echo "<td>".$row["id"]."</td>";
        echo "</table>";
    }
}
echo "总共有".$page_num."页记录";
echo "<br>";
if($page != 1) {
    echo "<a href=index.php?page=1>首页</a>";//index.php的路径不加引号也可以
    echo "<a href=index.php?page=".($page - 1).">上一页</a>";//如果表达式不是直接的变量,必须计算出来之后使用.连接
}
for($i=1;$i<=$page_num;$i++){
    echo "<a href=index.php?page=".$i.">第$i 页&nbsp;</a>";
}
if($page < $page_num) {
    echo "<a href=index.php?page=".($page + 1).">下一页</a>";
    echo "<a href=index.php?page=$page_num>尾页</a>";

}


本文出自 “厚积薄发” 博客,请务必保留此出处http://joedlut.blog.51cto.com/6570198/1857808

以上是关于PHP入门(16) 使用mysqli实现简单的分页的主要内容,如果未能解决你的问题,请参考以下文章

简单易用的分页类实例代码PHP

PHP简单漂亮的分页类

PHP 简单的分页

php课程---简单的分页练习

PHP之简单的分页类

PHP实现仿Google分页效果的分页函数