Blogger Information
Blog 19
fans 1
comment 0
visits 15275
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
仿PHP中文网分页实例
海阔天空
Original
503 people have browsed it

仿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还不了解,感觉编辑、删除功能还不完善,下步争取实现编辑、删除后,显示的还是当前页,而不是统一回到第一页。
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:你说的这个功能, 在js中通过bom的一些对象方法就可以做到
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post