如何用PHP实现MySQL表数据按日期分组展示到前端表格
实现步骤
- 查询数据:从MySQL查询数据时按
date字段降序排序,确保同日期的数据连续排列 - 遍历渲染:遍历数据时记录上一组的日期,每次遇到新日期先输出日期分组行,再输出对应的数据行
完整代码示例
<?php // 1. 数据库连接(替换为自己的数据库配置) $host = '127.0.0.1'; $dbname = '替换为你的库名'; $username = '替换为数据库账号'; $password = '替换为数据库密码'; try { $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $username, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // 2. 查询数据,按日期倒序排序,替换为你的表名 $stmt = $pdo->query("SELECT id, `date`, name, files FROM 替换为你的表名 ORDER BY `date` DESC"); $data = $stmt->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e) { die("数据库错误:" . $e->getMessage()); } // 3. 渲染表格 $lastDate = null; // 记录上一次的分组日期 ?> <table> <thead> <tr> <th>#</th> <th>Ticket(id)</th> <th>Date</th> <th>Name</th> <th>Files</th> </tr> </thead> <tbody> <?php foreach ($data as $row): ?> <?php // 提取当前行的年月日部分作为分组依据 $currentDate = date('Y-m-d', strtotime($row['date'])); // 日期变化时输出分组行 if ($currentDate !== $lastDate): $lastDate = $currentDate; ?> <tr> <td><?= $currentDate ?></td> <td></td> <td></td> <td></td> <td></td> </tr> <?php endif; ?> <!-- 输出数据行 --> <tr> <td><?= $row['id'] ?></td> <td><?= $row['id'] ?></td> <td><?= $row['date'] ?></td> <td><?= $row['name'] ?></td> <td><?= $row['files'] ?></td> </tr> <?php endforeach; ?> </tbody> </table>
注意事项
- 如果需要按日期升序排列,把SQL语句中的
DESC改为ASC即可 - 如果
date字段存储的是时间戳,只需修改日期提取的逻辑即可适配
内容的提问来源于stack exchange,提问作者HelmaJS
相关产品推荐
相关产品推荐

