//初次实现分页功能的想法(当然了,是别人的想法,我只是记录了下来而已)
//1. 求出总条数 假如13条
//准备sql语句(查询出数据库bbs_user表数据的总条数)
$sql = "select count(*) as count from bbs_user";
//发送sql语句(接收过来查询到条数)
$result = mysqli_query($conn,$sql);
//处理结果集
$pageRes = mysqli_fetch_assoc($result);
//var_dump($pageRes);
//$count把条数从结果集里取出(总条数)
$count = $pageRes['count'];
var_dump($count) ;看一看:
//2. 需求:每页只显示5条
$num = 5;
//3. ceil(总条数/每页显示数) ceil是向上取整,就算剩一条也要单独占一页 (3页)
$pageCount = ceil($count / $num); //分的页数
var_dump($pageCount) ;打印查一下:
//4. 根据总页数求出偏移量(即下一页开始是第几条,下边推出的公式)
$offset = ($page - 1) * $sum(5);
//5. $page 可以设置默认值为 1 ,但是还没有值,所以我们可以给定一个初值
$page = 1;
//6. 修改sql语句(此sql非 彼sql语句),使用limit限制(下边的推导)
$sql = "select * from bbs_user limit " . $offect . ',' . $num; //其中limit后边必须跟空格,否则会出错
//可以运行看看出现什么效果
//7. 我们是不是还没有写上一页、下一页、首页以及尾页?
<a href = "" >首页
<a href = "" >上一页
<a href = "" >下一页
<a href = "" >尾页
//8. 修改$page的初值 , 我们自动获取page的值
$page = $_GET['page'];
//此时我们会发现竟然出错了 !空?怎么改?
//我们的初始目的是让$page的初值为 1 ,我们可以这样,加一个条件判断,如果空就为 1,否则就是得到的页数
$page = empty($_GET['page'])? 1 : $_GET['page'];//三目运算
//9. 我们先把链接给定首页和尾页(简单),再把上一页下一页写上
//首页就是主页面,即page=1
<a href = "testFenye.php?page = 1" >首页
//尾页就是总页数(可以想一下,总页数就是最后一页)
<a href = "testFenye.php?page = <?php echo $pageCount; ?>" >尾页
//上一页我们先用一个$prev表示
<a href = "testFenye.php?page = <?php echo $prev; ?>">上一页
//下一页同上一页,用$next表示
<a href = "testFenye.php?page = <?php echo $next; ?>">下一页
//10. 写完了链接,但是$prev和$next我们还没有给值呢
//上一页的话就是$page - 1了
$prev = $page - 1 ;
//那么下一页就是$page + 1了
$next = $page + 1 ;
//11. 因为$page的初值为 1 , (参考第 5 步或第 8 步), 所以$prev会到 0 , $next会是page+1,也就是我们点下一页page就会增加 1 ,我们可以加一个限制条件
if($prev < 1){
$prev = 1 ;
}
if($next > $pageCount){
$next = $pageount ;
}
select * from bbs_user limit 0 , 5 这是第一页 1
select * from bbs_user limit 5 , 5 这是第二页 2
select * from bbs_user limit 10 , 5 这是第三页 3
select * from bbs_user limit 15 , 5 这是第四页 4
推出来的公式
($page - 1) * $sum (5) //$page是当前页数
这是我预先写好的查询页面,如下:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>系统主页面</title>
</head>
<body>
<?php
$conn = mysqli_connect("localhost","root","");
if(!$conn){
echo "失败";
}
mysqli_select_db($conn,"bbs");
$sql = "select * from bbs_user";
$obj = mysqli_query($conn,$sql);
echo "<center>";
echo "<table border = 1 cellspacing = '0' cellpadding = '10'>";
echo "<th>编号</th><th>姓名</th><th>密码</th><th>地址</th><th>性别</th><th>年龄</th><th>操作</th>";
while($row = mysqli_fetch_assoc($obj)){
echo "<tr>";
echo '<td>'.$row['id'].'</td>';
echo '<td>'.$row['username'].'</td>';
echo '<td>'.$row['password'].'</td>';
echo '<td>'.$row['address'].'</td>';
echo '<td>'.$row['sex'].'</td>';
echo '<td>'.$row['age'].'</td>';
echo '<td><a href = "del.php?id='.$row['id'].'">删除</a>/<a href = "update.php?id='.$row['id'].'">修改</a></td>';
echo "</tr>";
}
echo "</table>";
echo "<a href = 'add.php'>添加</a>";
echo "<center>";
mysqli_close($conn);
?>
</body>
</html>
最后的源代码:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>系统主页面</title>
</head>
<body>
<?php
//5.设置$page的默认值
#$page = 1;
//8.修改$page的值
$page = empty($_GET['page'])?1 : $_GET['page'];
$conn = mysqli_connect("localhost","root","");
if(!$conn){
echo "失败";
}
mysqli_select_db($conn,"bbs");
//------------分页开始-------------------
//1.求出总条数
$sql = "select count(*) as count from bbs_user";
$result = mysqli_query($conn,$sql);
$pageRes = mysqli_fetch_assoc($result);
#var_dump($pageRes); //13
$count = $pageRes['count'];
//2.每页显示数(5)
$num = 5;
//3.根据每页显示数求出总页数
$pageCount = ceil($count / $num); //向上取整
#var_dump($pageCount); //3
//4.根据总页数求出偏移量
$offset = ($page - 1) * $num; //$page默认为 1, 下一步设置
//------------分页结束-------------------
//6.修改sql语句
$sql = "select * from bbs_user limit " . $offset . ',' . $num;
#$sql = "select * from bbs_user";
$obj = mysqli_query($conn,$sql);
echo "<center>";
echo "<table border = 1 cellspacing = '0' cellpadding = '10'>";
echo "<th>编号</th><th>姓名</th><th>密码</th><th>地址</th><th>性别</th><th>年龄</th><th>操作</th>";
while($row = mysqli_fetch_assoc($obj)){
echo "<tr>";
echo '<td>'.$row['id'].'</td>';
echo '<td>'.$row['username'].'</td>';
echo '<td>'.$row['password'].'</td>';
echo '<td>'.$row['address'].'</td>';
echo '<td>'.$row['sex'].'</td>';
echo '<td>'.$row['age'].'</td>';
echo '<td><a href = "del.php?id='.$row['id'].'">删除</a>/<a href = "update.php?id='.$row['id'].'">修改</a></td>';
echo "</tr>";
}
echo "</table>";
#echo "<a href = 'add.php'>添加</a>";
echo "<center>";
//10.设置上一页下一页的$prev和$next
$prev = $page - 1;
$next = $page + 1;
//11.设置页数限制
if($prev<1){
$prev = 1;
}
if($next>$pageCount){
$next = $pageCount;
}
//关闭连接
mysqli_close($conn);
?>
<!--7.添加首页、上一页、下一页、尾页(href没有链接)-->
<!--9.给定链接,首页和尾页写死,首页就是page=1,尾页是总页数,上一页先用$prev表示,下一步设置,下一页同上一页-->
<a href="testFenye.php?page=1">首页</a>
<a href="testFenye.php?page=<?php echo $prev;?>">上一页</a>
<!--混编简写-->
<a href="testFenye.php?page=<?=$next;?>">下一页</a>
<a href="testFenye.php?page=<?=$pageCount;?>">尾页</a>
</body>
</html>