关键词搜索

源码搜索 ×
×

PHP笔记-表格及分页功能

发布2022-01-10浏览1340次

详情内容

运行截图如下:

 

 

前端代码如下:

Student.php

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <h1>HelloWorld</h1>
  9. <table border="1" cellspacing="1" cellpadding="1">
  10. <thead>
  11. <tr>
  12. <td>ID</td>
  13. <td>名字</td>
  14. <td>年龄</td>
  15. <td>性别</td>
  16. <td>邮箱</td>
  17. <td>地址</td>
  18. <td>更新时间</td>
  19. </tr>
  20. </thead>
  21. <tbody>
  22. {foreach $students as $student}
  23. <tr>
  24. <td>{$student.id}</td>
  25. <td>{$student.name}</td>
  26. <td>{$student.age}</td>
  27. <td>
  28. {if $student.sex eq "m"} 男
  29. {else}女
  30. {/if}
  31. </td>
  32. <td>{$student.email}</td>
  33. <td>{$student.address}</td>
  34. <td>{$student.updateTime}</td>
  35. </tr>
  36. {/foreach}
  37. </tbody>
  38. </table>
  39. <ul>
  40. {$pageStr}
  41. </ul>
  42. </body>
  43. </html>

后端关键代码

提供数据的:

StudentController.php

  1. <?php
  2. namespace admin\controller;
  3. use core\Controller;
  4. use home\model\StudentModel;
  5. use vendor\Page;
  6. class StudentController extends Controller{
  7. public function student(){
  8. $page = $_REQUEST["page"] ?? 1;
  9. $studentModel = new StudentModel();
  10. $students = $studentModel->getAllStudents($page);
  11. $counts = $studentModel->getCounts();
  12. $cond = array("a" => A, "c" => C, "p" => P);
  13. $pageStr = Page::clickPage(URL . "index.php", $counts, $cond, $page);
  14. $this->assign("pageStr", $pageStr);
  15. $this->assign("students", $students);
  16. $this->assign("counts", $counts);
  17. $this->display("student.html");
  18. }
  19. }

分页代码:

Page.php

  1. <?php
  2. namespace vendor;
  3. class Page{
  4. public static function clickPage($url, $counts, $cond = array(), $page = 1, $pageCount = 5): string{
  5. //所有页数
  6. $pages = ceil($counts / $pageCount);
  7. //上一页和下一页
  8. $prev = $page > 1 ? $page - 1 : 1;
  9. $next = $page < $pages ? $page + 1 : $pages;
  10. //url上需要补充的内容
  11. $patchInfo = "";
  12. foreach ($cond as $key => $value){
  13. $patchInfo .= $key . "=" . $value . "&";
  14. }
  15. //先展示上一页
  16. $click = "<li><a href='{$url}?{$patchInfo}page={$prev}'>上一页</a></li>";
  17. //如果总页数在7以内全都都展示出来
  18. if($pages <= 7){
  19. for($i = 1; $i <= $pages; $i++){
  20. $click .= "<li><a href='{$url}?{$patchInfo}page={$i}'>{$i}</a></li>";
  21. }
  22. }
  23. else{ //总页数在7页以上
  24. //如果当前选中页数在5页以内,就把前7页全显示了。
  25. if($page <= 5){
  26. for($i = 1; $i <= 7; $i++){
  27. $click .= "<li><a href='{$url}?{$patchInfo}page={$i}'>{$i}</a></li>";
  28. }
  29. $click .= "<li><a href='#'>...</a></li>";
  30. }
  31. else{
  32. //如果当前选中的在第7页(包括第7页)以上,先展示1,2
  33. $click .= "<li><a href='{$url}?{$patchInfo}page=1'>1</a></li>";
  34. $click .= "<li><a href='{$url}?{$patchInfo}page=2'>2</a></li>";
  35. $click .= "<li><a href='#'>...</a></li>";
  36. //再展示中间页
  37. //如果是最后3页了,就全部展示出来
  38. if($pages - $page <= 3){
  39. for($i = $pages - 4; $i <= $pages; $i++){
  40. $click .= "<li><a href='{$url}?{$patchInfo}page={$i}'>{$i}</a></li>";
  41. }
  42. }
  43. else{ //展示当前页面的前2页,和后2页
  44. for($i = $page - 2; $i <= $page + 2; $i++){
  45. $click .= "<li><a href='{$url}?{$patchInfo}page={$i}'>{$i}</a></li>";
  46. }
  47. $click .= "<li><a href='#'>...</a></li>";
  48. }
  49. }
  50. }
  51. //最后补一个下一页
  52. $click .= "<li><a href='{$url}?{$patchInfo}page={$next}'>下一页</a></li>";
  53. return $click;
  54. }
  55. }

简单说下逻辑:

http://localhost:63343/IT1995Blog/public/index.php?a=student&c=Student&p=admin&page=2

这个page就是当前页,程序里面写死了是每页5条,a=student,c=Student,p=admin是程序里面的逻辑,这个是必须要加的。所以在Page中会补这个。

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载