You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP循环输出数据时如何将相同Bundle Name的内容放在同一表格

PHP按Bundle Name字段分组生成独立表格实现方案

原有代码问题分析

  • 核心逻辑错误:每次循环都将$bundel赋值为当前行的BundelName,后续判断$row['BundelName'] != $bundel的条件永远不成立,无法触发表格拆分
  • 缺少查询结果排序逻辑,若同个Bundle的行在数据库中不连续,会导致同个Bundle被拆分到多个表格
  • 没有提前定义分组标识变量,初始状态下无判断依据

修改后可运行代码

<?php
include('connection.php');
// 必须加ORDER BY保证同Bundle的行连续返回
$result1 = mysqli_query($conn, "SELECT * FROM bundel ORDER BY BundelName");
// 存储上一个分组的Bundle名,初始为空
$prevBundle = '';
while ($row = mysqli_fetch_assoc($result1)) {
    $currentBundle = $row['BundelName'];
    // 当前Bundle和上一个不同,说明开启新分组
    if ($currentBundle != $prevBundle) {
        // 不是第一个分组的话,先关闭上一个表格
        if ($prevBundle != '') {
            echo '</table><br><br>';
        }
        // 输出新分组的表格,包含Bundle名标题
        echo '<table border="1">';
        echo '<caption><strong>'.$currentBundle.'</strong></caption>';
        // 可选:输出表头
        echo '<tr><th>SKU</th><th>Description</th></tr>';
        // 更新分组标识
        $prevBundle = $currentBundle;
    }
    // 输出当前行数据
    echo '<tr>';
    echo '<td>'.$row['SKU'].'</td>';
    echo '<td>'.$row['Description'].'</td>';
    echo '</tr>';
}
// 循环结束关闭最后一个表格
echo '</table>';
?>

实现逻辑说明

  • 首先给SQL查询加上ORDER BY BundelName,确保所有相同Bundle的行连续返回,这是分组渲染的基础前提
  • 用$prevBundle变量存储上一次循环的Bundle名称作为分组标识,初始值设为空
  • 每次循环先判断当前行的Bundle是否和上一个分组标识不同:如果不同就关闭上一个表格,输出新表格的头部和Bundle名称
  • 循环结束后单独关闭最后一个分组的表格,避免标签不闭合

内容的提问来源于stack exchange,提问作者nzxy12

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 19:36:04