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

时间:2014-07-26 23:48:32

标签: 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>";
}

2 个答案:

答案 0 :(得分:1)

用此替换您的代码。 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;
    }
}

答案 1 :(得分:0)

使用Troops键创建一个多维数组,并使用相同的部队对每个记录进行分组。然后使用foreach()循环数组并打印出信息。

Group array by subarray values