PHP:从具有重复条目的数组构建 HTML 表

标签 php mysql sql arrays

我有一个数据库表(根据查询构建),其中列出了成员(称为 Troop)、事件、开始日期和结束日期。一个成员可能会在表中多次列出,因为他们与多个事件相关联。

我想构建一个 HTML 表格,其中列出成员的姓名,后跟与他们关联的每个事件,然后再转到下一个成员,这可能是数组中的几个项目。

我正在考虑使用 foreach() 语句,但无法让它工作。关于如何完成此操作的任何指示?谢谢!

while(list($Event, $Troop, $StartDate, $EndDate) = mysqli_fetch_array($result)) {
  $return=$return . "<table>";
  $return=$return . "<tr>";
  $return=$return . "<th colspan=3>" . $Troop . "</th>";
  $return=$return . "</tr>";
  $return=$return . "<tr>";
    $return=$return . "<th>Event</th>";
    $return=$return . "<th>Start Date</th>";
    $return=$return . "<th>End Date</th>";
  $return=$return . "</tr>";
        //foreach ($Troop as $thisTroop) {
        $return=$return . "<tr>";
        $return=$return . "<td>" . $Event . "</td>";
        $return=$return . "<td>" . $StartDate . "</td>";
        $return=$return . "<td>" . $EndDate . "</td>";
        $return=$return . "</tr>";
        //}
  $return=$return . "</tr>";
  $return=$return . "</table>";
}

最佳答案

用这个替换你的代码。 sql结果必须按部队排序。

$return = '';
$currentTroop = '';

while(list($Event, $Troop, $StartDate, $EndDate) = mysqli_fetch_array($result)) {

    if ($currentTroop != $Troop) {
        $return .= "<table>"
        ."<tr>";
        ."<th colspan=3>" . $Troop . "</th>"
        ."</tr>"
        ."<tr>"
        ."<th>Event</th>"
        ."<th>Start Date</th>"
        ."<th>End Date</th>"
        ."</tr>";
    }

    $return .= "<tr>"
    ."<td>".$Event."</td>"
    ."<td>".$StartDate."</td>"
    ."<td>".$EndDate."</td>"
    ."</tr>";

    if ($currentTroop != $Troop) {
        $return .= "</tr>"
        ."</table>";
        $currentTroop = $Troop;
    }
}

关于PHP:从具有重复条目的数组构建 HTML 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24976545/

相关文章:

sql - 迭代表

php - 来自 MySQL 的 PHP 循环中的 JSON 回复

php - 发送批量短信中途停止

mysql - 将 MySQL 数据库迁移到 SQLite 时出错

MySQL:高效查询

mysql - 在MySQL中编写触发器时出现语法错误

PHP 打印/回显后退箭头错误

php - 我们可以确定 php 中数组元素的返回类型吗?

mysql - 使用多个 JOINS 进行查询

mysql 子查询错误 [21000][1241] 操作数应包含 1 列