如何用PHP连接Access数据库分组同列数据并在网页表格展示
按Access数据库Line列分组展示多表格数据的PHP实现
问题描述
我有一个Access数据库表,数据示例如下:
------------------------------- ID POperator Line 1 Jhon A 2 David B 3 Jacob A -------------------------------
希望在网页中按Line列的相同值分组,以多个表格形式展示,效果如下:
------------------------------- LINE A DATA ID POperator Line 1 Jhon A 3 Jacob A LINE B DATA ID POperator Line 2 David B ------------------------------------
目前我通过ODBC连接Access的代码如下:
$db = odbc_connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=".$db."",$user,$password); $result = odbc_exec($db,"select PTime,PSample,PRemarks,PLine,POperator from POV WHERE PDate= #".$current_date."# ORDER BY PLine ASC");
需要修改逻辑或编写PHP代码实现按Line分组展示的效果。
解决方案
实现思路
- 分组处理查询结果:将数据库返回的结果按
PLine字段归集,把同一Line的数据存入同一个数组键下。 - 循环渲染分组表格:遍历分组后的数组,为每个Line单独生成标题和表格,输出到网页。
完整代码示例
<?php // 数据库连接(保留原有连接逻辑) $db = odbc_connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=".$db."",$user,$password); // 补充ID字段并保持按PLine排序 $result = odbc_exec($db,"select ID, POperator, PLine, PTime, PSample, PRemarks from POV WHERE PDate= #".$current_date."# ORDER BY PLine ASC"); // 初始化分组存储数组 $groupedData = []; // 遍历结果集,按PLine分组数据 while ($row = odbc_fetch_array($result)) { $line = $row['PLine']; if (!isset($groupedData[$line])) { $groupedData[$line] = []; } $groupedData[$line][] = $row; } // 输出分组后的表格内容 foreach ($groupedData as $line => $rows) { // 输出分组标题 echo "<h3>LINE {$line} DATA</h3>"; // 生成表格 echo "<table border='1' cellpadding='4' cellspacing='0'>"; // 输出表头 echo "<tr>"; foreach (array_keys($rows[0]) as $header) { echo "<th>{$header}</th>"; } echo "</tr>"; // 输出表格数据行 foreach ($rows as $row) { echo "<tr>"; foreach ($row as $value) { echo "<td>{$value}</td>"; } echo "</tr>"; } echo "</table><br>"; } // 关闭数据库连接 odbc_close($db); ?>
代码说明
- 原查询补充了
ID字段(匹配示例数据需求,可根据实际查询字段调整); - 使用
odbc_fetch_array将每行数据转为关联数组,方便按字段名操作; - 分组数组
$groupedData以Line值为键,对应存储该Line下的所有数据行; - 表格默认添加了基础边框和内边距,可通过CSS自定义样式优化展示效果。
内容的提问来源于stack exchange,提问作者Velasqz020
相关产品推荐
相关产品推荐

