博客列表 >php做分页案例,解决课程老师的bug

php做分页案例,解决课程老师的bug

唐
原创
2020年07月27日 23:08:03523浏览

在以下课程中:
《直播实录: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

  1. $conn=mysqli_connect ('localhost','root','root','tjl'); //函数连接到数据库对象
  2. $aa=isset($_GET['p']) ? $_GET['p'] : 0;
  3. $bb=isset($_GET['p']) ? $_GET['p'] : 0;
  4. $offset=$aa* 3; //计算显示偏移量,3是每页显示的数量
  5. $sql = "SELECT id, name, course FROM student LIMIT {$offset},3 ";
  6. $select = mysqli_query($conn,$sql); // 执行查询语句返回结果集对象(数据表)
  7. $rows=mysqli_fetch_all($select,MYSQLI_ASSOC); // 一次性获取全部记录行数结果集
  8. foreach($rows as $key=>$value){ // 遍历二维数组,输出子数组的元素值
  9. echo 'id:'. $value['id'] . ',姓名:' . $value['name'] . ',课程:' . $value['course'] . '<br />';
  10. }
  11. $sql2 = "SELECT * FROM student"; // sql语句为查询全部数量的结果集(整张数据表)
  12. $select2 = mysqli_query($conn,$sql2); // 执行sql语句
  13. $page=mysqli_num_rows($select2)/3; //3.3,展示的总页数=数据的总条/行数 除以一页展的3条数
  14. $num=floor($page); //总页数3.3向下取整数为3
  15. if($aa<=0){ // 限制上一页bb不要退到-0
  16. $aa=$aa+1; } // 如果上一页bb为0,让它自加1,就保持继续点击上一页,bb不会小于0
  17. if($bb>=$num){ // 限制下一页cc不要大于总页数num3
  18. $bb=$bb-1; } // 如果下一页cc加到3,让它自减1,就保持继续点击下一页,cc不会增长
  19. echo '<a href="?p=' . ($aa-1) . ' ">上一页</a>';
  20. for($i=0; $i<=$num; $i++){
  21. echo ' <a href="?p=' . ($i) . ' ">' .( ($i)+1 ). '</a> '; }
  22. echo '<a href="?p=' . ($bb+1) . ' ">下一页</a>';

数据库学生表如下:

(把下面代码复制到 student.sql 文件导入数据库student表中即可)

  1. INSERT INTO `student` (`id`, `name`, `course`) VALUES
  2. (1, '唐建林', '化学'),
  3. (2, '黄蓉', 'php'),
  4. (3, '大唐', 'javascript'),
  5. (4, '李3明', '物理'),
  6. (5, '林3欢', 'css3'),
  7. (6, '李明', 'html'),
  8. (7, '李明', 'html'),
  9. (8, '1李明', '1html'),
  10. (9, '2李明', '22tml'),
  11. (10, '老顽童', 'mysql');

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议