在以下课程中:
《直播实录:PHP魔鬼训练营[从零开始制作个人博客]》
——第5章 5-2[实例]如何使用PHP实现完美分页
https://www.php.cn/code/20774.html
老师讲的案例,存在bug:
?p=1时,page=1 有bug 点击下一页 page 会等于3 加了两次1
下面是我的解决方案:把下一页的$aa-1改为$bb-1
$conn=mysqli_connect ('localhost','root','root','tjl'); //函数连接到数据库对象$aa=isset($_GET['p']) ? $_GET['p'] : 0;$bb=isset($_GET['p']) ? $_GET['p'] : 0;$offset=$aa* 3; //计算显示偏移量,3是每页显示的数量$sql = "SELECT id, name, course FROM student LIMIT {$offset},3 ";$select = mysqli_query($conn,$sql); // 执行查询语句返回结果集对象(数据表)$rows=mysqli_fetch_all($select,MYSQLI_ASSOC); // 一次性获取全部记录行数结果集foreach($rows as $key=>$value){ // 遍历二维数组,输出子数组的元素值echo 'id:'. $value['id'] . ',姓名:' . $value['name'] . ',课程:' . $value['course'] . '<br />';}$sql2 = "SELECT * FROM student"; // sql语句为查询全部数量的结果集(整张数据表)$select2 = mysqli_query($conn,$sql2); // 执行sql语句$page=mysqli_num_rows($select2)/3; //3.3,展示的总页数=数据的总条/行数 除以一页展的3条数$num=floor($page); //总页数3.3向下取整数为3if($aa<=0){ // 限制上一页bb不要退到-0$aa=$aa+1; } // 如果上一页bb为0,让它自加1,就保持继续点击上一页,bb不会小于0if($bb>=$num){ // 限制下一页cc不要大于总页数num3$bb=$bb-1; } // 如果下一页cc加到3,让它自减1,就保持继续点击下一页,cc不会增长echo '<a href="?p=' . ($aa-1) . ' ">上一页</a>';for($i=0; $i<=$num; $i++){echo ' <a href="?p=' . ($i) . ' ">' .( ($i)+1 ). '</a> '; }echo '<a href="?p=' . ($bb+1) . ' ">下一页</a>';

(把下面代码复制到 student.sql 文件导入数据库student表中即可)
INSERT INTO `student` (`id`, `name`, `course`) VALUES(1, '唐建林', '化学'),(2, '黄蓉', 'php'),(3, '大唐', 'javascript'),(4, '李3明', '物理'),(5, '林3欢', 'css3'),(6, '李明', 'html'),(7, '李明', 'html'),(8, '1李明', '1html'),(9, '2李明', '22tml'),(10, '老顽童', 'mysql');

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号