【问题标题】:PHP: Building an HTML Table from an Array with Repeated EntriesPHP:从具有重复条目的数组构建 HTML 表
【发布时间】:2014-07-26 23:48:32
【问题描述】:

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

我想构建一个 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>";
}

【问题讨论】:

  • 你遇到了什么错误?
  • 如果我建立两个列表,一个为list_a($Troop),另一个为list_b($Event, $StartDate, $EndDate),它会起作用吗?
  • 没有错误。该代码按原样工作,但是,它每次都列出部队,而不是列出部队一次,然后再列出他们的事件。

标签: php mysql sql arrays


【解决方案1】:

用这个替换你的代码。 sql结果需要按照Troop排序。

$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;
    }
}

【讨论】:

  • 不错!我开始对此进行试验,但是您的解决方案比我的要干净得多。谢谢!
【解决方案2】:

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

Group array by subarray values

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-18
    • 2012-01-11
    • 1970-01-01
    • 2011-12-02
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    相关资源
    最近更新 更多