博客列表 >php之动态分页

php之动态分页

月光下,遗忘黑暗
月光下,遗忘黑暗原创
2021年05月23日 16:07:04742浏览

代码块

demo1.php

  1. <?php
  2. $pdo = new PDO('mysql:host=localhost;dbname=video','root','root',[PDO::ATTR_ERRMODE=>PDO::ERRMODE_WARNING,PDO::ATTR_DEFAULT_FETCH_MODE=>PDO::FETCH_ASSOC]);
  3. //获取分页
  4. //当前页码
  5. $page = $_GET['p']??1;
  6. //每页显示的条数
  7. $num = 1;
  8. //偏移量
  9. $offset = ($page-1)*$num;
  10. //获取分页数据
  11. $sql = "select `id`,`username`,`truename` from `admins` order by `id` asc limit {$num} offset {$offset}";
  12. $users = $pdo->query($sql)->fetchAll();
  13. //print_r($users);
  14. //获取总页数
  15. $sql = "select ceil(count(`id`)/{$num}) as `total` from `admins`";
  16. $pages = $pdo->query($sql)->fetch()['total'];

demo2.php

  1. <?php
  2. require 'demo1.php';
  3. ?>
  4. <!doctype html>
  5. <html lang="en">
  6. <head>
  7. <meta charset="UTF-8">
  8. <meta name="viewport"
  9. content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  10. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  11. <title>Document</title>
  12. <link rel="stylesheet" href="paging/style.css">
  13. </head>
  14. <body>
  15. <table>
  16. <caption>用户信息表</caption>
  17. <thead><tr>
  18. <td>编号</td>
  19. <td>用户名</td>
  20. <td>真实姓名</td>
  21. <td>操作</td>
  22. </tr>
  23. </thead>
  24. <tbody>
  25. <?php foreach ($users as $user):?>
  26. <tr>
  27. <td><?=$user['id']?></td>
  28. <td><?=$user['username']?></td>
  29. <td><?=$user['truename']?></td>
  30. <td><button>修改</button><button>删除</button></td>
  31. </tr>
  32. <?php endforeach;?>
  33. </tbody>
  34. </table>
  35. <?php
  36. //省略点分页
  37. //分页条显示的页数
  38. $showPage = 3;
  39. //分页条的开始码页
  40. $startPage = 1;
  41. //分页条的结束码页
  42. $endPage = $pages;
  43. //分页条的终止页码相对于当前页码的偏移量
  44. $offset = ($showPage-1)/2;
  45. if ($showPage<$pages) {
  46. if ($page > $offset+1) {
  47. $startOmit = '...';
  48. $startPage = $page-$offset;
  49. $endPage = $page+$offset;
  50. if($endPage>$pages) $endPage=$pages;
  51. } else {
  52. $startPage = 1;
  53. $endPage = $showPage;
  54. }
  55. if ($showPage<$pages && $page+$offseta<$pages) {
  56. $endOmit = '...';
  57. }
  58. }
  59. ?>
  60. <!--动态生成分页-->
  61. <p>
  62. <!-- 首页 上一页 下一页 尾页-->
  63. <?php $prev = $page-1;if ($page==1) $prev==1;if ($page!=1): ?>
  64. <a href="<?=$_SERVER['PHP_SELF'].'?p=1'?>">首页</a>
  65. <a href="<?=$_SERVER['PHP_SELF'].'?p='.$prev?>">上一页</a>
  66. <?endif;?>
  67. <?php if (isset($startOmit)):?>
  68. <a href="#"><?=$startOmit?></a>
  69. <?endif;?>
  70. <?php
  71. for ($i=$startPage; $i<=$endPage; $i++){
  72. $jump = sprintf('%s?p=%s',$_SERVER['PHP_SELF'],$i);
  73. $active = ($i==$page) ? 'active' : null;
  74. ?>
  75. <a href="<?=$jump?>" class="<?=$active?>"><?=$i?></a>
  76. <? }?>
  77. <?php if (isset($endOmit)):?>
  78. <a href="#"><?=$endOmit?></a>
  79. <?endif;?>
  80. <!-- 下一页-->
  81. <?php $next=$page+1; if ($page==$pages) $next=$page;if ($page!=$pages):?>
  82. <a href="<?=$_SERVER['PHP_SELF'].'?p='.$next?>">下一页</a>
  83. <a href="<?=$_SERVER['PHP_SELF'].'?p='.$pages?>">尾页</a>
  84. <?endif;?>
  85. </p>
  86. </body>
  87. </html>

效果

composer自动加载机制:了解
第三方验证码库:熟练使用

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