博客列表 >仿PHP中文网分页实例

仿PHP中文网分页实例

海阔天空
海阔天空原创
2020年05月15日 14:55:23504浏览

仿PHP中文网分页实例

实现功能

  • 实现PHP中文网类似分页效果
  • 可以对记录进行编辑和删除
    效果图如下:


分页代码

  1. <?php require 'demo1.php' ?>
  2. <!DOCTYPE html>
  3. <html lang="en">
  4. <head>
  5. <meta charset="UTF-8">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>仿php中文网分页数据展示实例</title>
  8. <link rel="stylesheet" href="style.css">
  9. </head>
  10. <body>
  11. <table>
  12. <caption>员工管理系统</caption>
  13. <thead>
  14. <tr>
  15. <th>ID</th>
  16. <th>姓名</th>
  17. <th>年龄</th>
  18. <th>性别</th>
  19. <th>职位</th>
  20. <th>手机</th>
  21. <th>入职时间</th>
  22. <th>操作</th>
  23. </tr>
  24. </thead>
  25. <tbody>
  26. <?php foreach ($staffs as $staff) : ?>
  27. <tr>
  28. <td><?php echo $staff['id'] ?></td>
  29. <td><?php echo $staff['name'] ?></td>
  30. <td><?php echo $staff['age'] ?></td>
  31. <td><?php echo $staff['sex'] ? '男' : '女' ?></td>
  32. <td><?php echo $staff['position'] ?></td>
  33. <td><?php echo $staff['mobile'] ?></td>
  34. <td><?php echo date('Y-m-d', $staff['hiredate']) ?></td>
  35. <td><button onclick="location.href='handle.php?action=edit&id=<?php echo $staff['id'] ?>&p=<?php echo $page ?>'">编辑</button>
  36. <button onclick="location.href='handle.php?action=del&id=<?php echo $staff['id'] ?>'">删除</button></td>
  37. </tr>
  38. <?php endforeach; ?>
  39. </tbody>
  40. </table>
  41. <!-- 添加跳转到首页, 前一页, 下一页, 尾页的功能 -->
  42. <p>
  43. <?php
  44. // 1. 分页条显示7个页码
  45. $showPages = 7;
  46. // 2. 分页条的起始页码
  47. $startPage = 1;
  48. // 3. 分页条的终止页码
  49. $endPage = $pages; // 当前总页数: 14
  50. //倒数第二页页码
  51. $prevEndpage=$pages-1;
  52. // 4. 分页条的偏移量: (当前分页条显示的页码数 - 1) / 2
  53. $offsetPage = ($showPages -1) / 2; // 2
  54. // 只有当前分页条数量 < 总页数, 才有必要显示出省略标记
  55. if ($showPages < $pages) {
  56. // 如果当前页>$showPages时,显示'...' 。
  57. // 将当前分页条页码重置
  58. if ($page >$showPages) {
  59. $startOmit = '...';
  60. $startPage = $page - $offsetPage;
  61. $endPage = $page + $offsetPage;
  62. //当前页+$showPages>总页数时,右侧显示最后8个页码
  63. if (($page+$showPages)>$pages){
  64. $startPage=$pages-$showPages;
  65. $endPage=$pages;
  66. }
  67. } else {
  68. // 当前页 <=$showPages时,左侧显示8个页码> ;
  69. $startPage = 1;
  70. $endPage = $showPages+1;
  71. }
  72. //当前页+$showPages-1<总页数时,显示'...'
  73. if ($page + $showPages-1< $pages) {
  74. $endOmit = '...';
  75. }
  76. }
  77. ?>
  78. <!-- 首页 -->
  79. <a href="<?php echo $_SERVER['PHP_SELF'] . '?p=1' ?>">首页</a>
  80. <!-- 前一页 -->
  81. <?php
  82. $prev = $page - 1;
  83. if ($page == 1) $prev = 1;
  84. ?>
  85. <a href="<?php echo $_SERVER['PHP_SELF'] . '?p=' . $prev ?>">前一页</a>
  86. <!-- 当前页>7时,左侧显示页码'1 2 ...' -->
  87. <?php if (isset($startOmit)) : ?>
  88. <a href="<?php echo $_SERVER['PHP_SELF'].'?p=1' ?>">1</a>
  89. <a href="<?php echo $_SERVER['PHP_SELF'].'?p=2' ?>">2</a>
  90. <a href="#"><?php echo $startOmit ?></a>
  91. <?php endif ?>
  92. <!-- 循环出从$startPage到$endPage页码 -->
  93. <?php for ($i=$startPage; $i<=$endPage; $i++): ?>
  94. <?php
  95. $jump = sprintf('%s?p=%s', $_SERVER['PHP_SELF'], $i );
  96. $active = ($i == $page) ? 'active' :null;
  97. ?>
  98. <a href="<?php echo $jump ?>" class="<?php echo $active ?>"><?php echo $i ?></a>
  99. <?php endfor ?>
  100. <!-- 当前页+6<总页数时,显示'...'和最后两个页码 -->
  101. <!-- $prevEndpage是倒数第二页页码 -->
  102. <?php if (isset($endOmit)) : ?>
  103. <a href="#"><?php echo $endOmit ?></a>
  104. <a href="<?php echo $_SERVER['PHP_SELF'] . "?p={$prevEndpage}" ?>"><?php echo $prevEndpage ?></a>
  105. <a href="<?php echo $_SERVER['PHP_SELF']."?p={$pages}" ?>"><?php echo $pages ?></a>
  106. <?php endif ?>
  107. <!-- 下一页 -->
  108. <?php
  109. $next = $page + 1;
  110. if ($page == $pages) $next = $pages;
  111. ?>
  112. <a href="<?php echo $_SERVER['PHP_SELF'] . '?p=' . $next ?>">下一页</a>
  113. <!-- 尾页 -->
  114. <a href="<?php echo $_SERVER['PHP_SELF'] . '?p='. $pages ?>">尾页</a>
  115. </p>
  116. </body>
  117. </html>

编辑、删除,handle控制器代码

  1. <?php
  2. require 'demo1.php';
  3. $action = $_GET['action'];
  4. $id = $_GET['id'];
  5. switch ($action) {
  6. // 编辑需要进行二步
  7. // 1. 渲染编辑表单
  8. case 'edit':
  9. include 'edit.php';
  10. break;
  11. // 2. 执行编辑操作
  12. case 'doedit':
  13. $sql = 'UPDATE `staffs` SET `name`=:name, `age`=:age,`sex`=:sex,`position`=:position ,`mobile`=:mobile,`hiredate`=:hiredate WHERE `id`=:id';
  14. // print_r($_POST);
  15. // $_POST['id'] = $id;
  16. $_POST['hiredate'] = strtotime($_POST['hiredate']);
  17. $stmt = $pdo->prepare($sql);
  18. $stmt->execute($_POST);
  19. if ($stmt->rowCount() === 1) echo '<script>alert("更新成功");location.href="demo4.php";</script>';
  20. break;
  21. // 3. 删除
  22. case 'del':
  23. $sql="delete from `staffs` where `id`=$id";
  24. $stmt = $pdo->prepare($sql);
  25. $stmt->execute();
  26. if ($stmt->rowCount() === 1) echo '<script>alert("删除成功");location.href="demo4.php";</script>';
  27. break;
  28. }

编辑页面效果图

删除效果图

总结

  • 1、进入实战阶段,开始进行前期学习内容的综合运用。对分页来说,弄通分页规则非常重要。感觉写代码时,排错占的时间越来越长。
  • 2、目前对于js还不了解,感觉编辑、删除功能还不完善,下步争取实现编辑、删除后,显示的还是当前页,而不是统一回到第一页。
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议