如何通过PHP按部门拆分员工数据生成独立表格?
按部门拆分员工表格的实现方案
要实现按部门拆分独立表格,核心思路是先按部门排序查询结果,再在循环中跟踪部门变化,动态创建/关闭表格,具体步骤如下:
1. 修改SQL查询语句
首先要确保查询结果按部门排序,让同一部门的员工连续出现,方便后续分组处理。假设员工表中部门字段名为department,修改后的SQL如下:
$employee_qry = $conn->query("SELECT * FROM `employee` ORDER BY `department` ASC") or die(mysqli_error());
2. 编写PHP循环逻辑,动态生成部门表格
通过变量跟踪当前所在部门,每次部门变化时,关闭上一个表格(若已存在),并创建新的部门表格及表头:
// 初始化当前部门变量 $current_dept = ''; // 循环处理每一行数据 while($row = $employee_qry->fetch_array()){ // 获取当前员工的部门 $dept = $row['department']; // 部门变化时切换表格 if($dept != $current_dept){ // 非首次循环时,关闭上一个表格 if($current_dept != ''){ echo '</tbody></table>'; } // 更新当前部门 $current_dept = $dept; // 输出新部门的表格标题与结构 echo '<h3>'.$dept.' 部门员工</h3>'; echo '<table border="1">'; echo '<thead><tr><th>ID编号</th><th>姓名</th><th>国籍</th></tr></thead><tbody>'; } // 输出当前员工的表格行 echo '<tr>'; echo '<td>'.$row['idnumber'].'</td>'; echo '<td>'.$row['EmpleName'].'</td>'; echo '<td>'.$row['Nationality'].'</td>'; echo '</tr>'; } // 循环结束后,关闭最后一个表格 if($current_dept != ''){ echo '</tbody></table>'; }
关键说明
- 请替换示例中的
department为你员工表中实际的部门字段名。 - 表格样式可通过CSS自定义,示例中
border="1"仅为基础展示。 - 若存在无部门的员工,可添加判断逻辑,将这类员工单独放在“无部门”表格中。
内容的提问来源于stack exchange,提问作者4awraq
相关产品推荐
相关产品推荐

