前几天正好学习了如何使用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*/
$mysqli = new mysqli("localhost","root","123456","mydb") or die("数据库连接失败!".$mysqli->errno);
/*index.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 "
echo "
".$row["id"]."";echo "
";}
}
echo "总共有".$page_num."页记录";
echo "
";
if($page != 1) {
echo "首页";//index.php的路径不加引号也可以
echo "上一页";//如果表达式不是直接的变量,必须计算出来之后使用.连接
}
for($i=1;$i<=$page_num;$i++){
echo "第$i 页 ";
}
if($page
echo "下一页";
echo "尾页";
}