博客列表 >数据库数据表的整页显示与分页显示

数据库数据表的整页显示与分页显示

P粉479712293
P粉479712293原创
2022年12月03日 13:18:45482浏览

题目1:数据库数据表的整页显示

1.demo1.php文件:

  1. <?php
  2. // *表格的打印
  3. namespace _221202a;
  4. // *引用php数据对象
  5. use PDO;
  6. // *连接数据库
  7. $db = new PDO('mysql:dbname=phpedu1', 'root', 'root');
  8. // *$sql:sql语句
  9. $sql = <<< SQL
  10. SELECT `id`,`name`,`sex`,`email`
  11. FROM `staff`;
  12. SQL;
  13. //*$stme: sql语句预处理对象
  14. $stmt = $db->prepare($sql);
  15. // *执行sql
  16. $stmt->execute();
  17. // *绑定一个列到变量中
  18. $stmt->bindColumn('id', $id);
  19. $stmt->bindColumn('name', $name);
  20. $stmt->bindColumn('sex', $sex);
  21. $stmt->bindColumn('email', $email);
  22. //* while,foreach, list()进行结果数组的解构到变量中
  23. // while($stmt->fetch()){
  24. // printf('%s:%s,%s,(%s)<br>',$id,$name,$sex,$email);
  25. // }
  26. // *用表格进行格式化打印
  27. $table = <<< TABLE
  28. <style>
  29. table {
  30. border-collapse: collapse;
  31. width: 90%;
  32. min-width: 360px;
  33. margin: 30px auto;
  34. text-align:center;
  35. }
  36. table,th,td {
  37. border: 1px solid #000;
  38. padding: 5px;
  39. }
  40. table caption {
  41. font-size: 18px;
  42. margin-bottom: 10px;
  43. }
  44. table thead {
  45. background: lightcyan;
  46. }
  47. table tbody tr:hover {
  48. cursor: pointer;
  49. background: #efefef;
  50. }
  51. </style>
  52. <table>
  53. <caption>员工信息表</caption>
  54. <thead>
  55. <tr>
  56. <th>ID</th>
  57. <th>姓名</th>
  58. <th>性别</th>
  59. <th>邮箱</th>
  60. </tr>
  61. </thead>
  62. <tbody>
  63. TABLE;
  64. // *PDO::FETCH_BOUND: 可以省的, 如果出现问题,再加上试试
  65. while ($stmt->fetch(PDO::FETCH_BOUND)) {
  66. // *拼装html代码
  67. $sex = $sex ? '女' : '男';
  68. $table .= <<< TR
  69. <tr>
  70. <td>$id</td>
  71. <td>$name</td>
  72. <td>$sex</td>
  73. <td>$email</td>
  74. </tr>
  75. TR;
  76. }
  77. $table .= '</tbody></table>';
  78. echo $table;

2.浏览器效果图:

题目2:页码,行数/页,偏移量,总记录行数,总页数

1.demo2.php文件:

  1. <?php
  2. // *页码,行数/页,偏移量,总记录行数,总页数
  3. namespace _221202b;
  4. // *引用php数据对象
  5. use PDO;
  6. // *连接数据库
  7. $db = new PDO('mysql:dbname=phpedu1', 'root', 'root');
  8. // *1. 页码
  9. // *$page:页码(即第几页),??:表示默认值
  10. $page = $_GET['p'] ?? 1;
  11. echo '当前页码: p = ' . $page . '<br>';
  12. // *2.$num:行数/页
  13. $num = 5;
  14. echo '行数/页: num = ' . $num . '<br>';
  15. // *3. 偏移量 = (页码 - 1) * 页数
  16. $offset = ($page - 1) * $num;
  17. echo '当前偏移量: offset = ' . $offset . '<br>';
  18. // *4. 计算总记录行数
  19. // SELECT CEIL(COUNT(*)/5) AS `total` FROM `staff`
  20. // SELECT COUNT(*) AS `total` FROM `staff`
  21. // *$sql:sql语句
  22. $sql = 'SELECT COUNT(*) AS `total` FROM `staff`';
  23. //*$stme: sql语句预处理对象
  24. $stmt = $db->prepare($sql);
  25. // *执行sql
  26. $stmt->execute();
  27. // *将总记录行数绑定到一个变量上
  28. $stmt->bindColumn('total', $total);
  29. $stmt->fetch();
  30. echo '当前总记录行数: total = ' . $total . '<br>';
  31. // *5. 计算总页数:$pages
  32. // *ceil(x/y):为向上取整
  33. $pages = ceil($total / $num);
  34. echo '当前总页数: pages = ' . $pages . '<br>';
  35. // *$sql:sql语句
  36. $sql = <<< SQL
  37. SELECT *
  38. FROM `staff`
  39. LIMIT $offset, $num;
  40. SQL;
  41. //*$stme: sql语句预处理对象
  42. $stmt = $db->prepare($sql);
  43. // *执行sql
  44. $stmt->execute();
  45. // *fetchAll():获取所有数据行并返回一个2维数组
  46. $staffs = $stmt->fetchAll(PDO::FETCH_ASSOC);
  47. echo '<hr>';
  48. if (count($staffs) === 0) {
  49. // *如果此2维数组为空
  50. echo '查询结果为空';
  51. } else {
  52. // *反之,将此2维数组作为1维数组遍历
  53. foreach ($staffs as $staff) {
  54. // *extract($staff):将此数组键转换为变量名称,将数组值转换为变量值
  55. extract($staff); // $id,$name,$sex,$email
  56. // *格式化打印
  57. printf('%s-%s-%s-%s<br>', $id, $name, $sex, $email);
  58. }
  59. }
  60. echo '<hr>';

2.浏览器效果图:

题目3:数据库数据表的分页显示

1.demo3.php文件:

  1. <?php require 'demo2.php' ?>
  2. <!DOCTYPE html>
  3. <html lang="zh-CN">
  4. <head>
  5. <meta charset="UTF-8">
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  7. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  8. <title>分页展示数据</title>
  9. <style>
  10. table {
  11. width: 400px;
  12. border-collapse: collapse;
  13. text-align: center;
  14. }
  15. table th,
  16. table td {
  17. border: 1px solid;
  18. padding: 5px;
  19. }
  20. table thead {
  21. background-color: lightcyan;
  22. }
  23. table caption {
  24. font-size: larger;
  25. margin-bottom: 8px;
  26. }
  27. body>p {
  28. display: flex;
  29. }
  30. p>a {
  31. text-decoration: none;
  32. color: #555;
  33. border: 1px solid;
  34. padding: 5px 10px;
  35. margin: 10px 2px;
  36. }
  37. /* 按钮高亮的样式 */
  38. .active {
  39. background-color: seagreen;
  40. color: white;
  41. border: 1px solid seagreen;
  42. }
  43. </style>
  44. </head>
  45. <body>
  46. <table>
  47. <caption>员工信息表</caption>
  48. <thead>
  49. <tr>
  50. <th>ID</th>
  51. <th>姓名</th>
  52. <th>性别</th>
  53. <th>邮箱</th>
  54. </tr>
  55. </thead>
  56. <tbody>
  57. <?php foreach ($staffs as $staff) :extract($staff) ?>
  58. <tr>
  59. <td><?=$id?>
  60. </td>
  61. <td><?=$name?>
  62. </td>
  63. <td><?=$sex?>
  64. </td>
  65. <td><?=$email?>
  66. </td>
  67. </tr>
  68. <?php endforeach ?>
  69. </tbody>
  70. </table>
  71. <p>
  72. <!-- *对总页数进行for循环 -->
  73. <?php for ($i=1; $i <= $pages; $i++): ?>
  74. <?php
  75. // *$url为网页上方的地址栏,当p值改变时使页码跳转
  76. // *PHP_SELF:表示当前的php脚本
  77. $url = $_SERVER['PHP_SELF'] . '?p=' . $i;
  78. // *页码$page默认值为1
  79. $page = $_GET['p'] ?? 1;
  80. //* 实现页码高亮
  81. // *三元运算符:当前的页码与地址栏的p相等时,则该链接按钮为active样式,反之为null
  82. $active = ($i == $page) ? 'active' : null;
  83. ?>
  84. <a href="<?=$url?>"class="<?=$active?>"><?=$i?></a>
  85. <?php endfor ?>
  86. </p>
  87. </body>
  88. </html>

2.浏览器效果图:

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