我有一个数据库表(从查询构建),列出成员(称为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>";
}
答案 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()循环数组并打印出信息。