首页 > 解决方案 > 如何根据结束日期显示组数据?

问题描述

我有一个如下表: 在此处输入图像描述

如何使用新表显示基于任务结束日期的数据。这意味着,完整的 <div 标签`` 将在每个结束日期重复并在列上显示记录。例如-

                                        **Staff 1**

日期:2020-11-14 在此处输入图像描述

日期:2020-11-27 在此处输入图像描述

                                         **Staff 2**

日期:2020-11-14 在此处输入图像描述

期待中的感谢。

<div>
<table class="table table-bordered">
<tr>
<th>ID</th>
<th>Task Name</th>
<th>Remarks</th>
<th>Start Date</th>
<th>End Date</th>
</tr>
<?php
$sql = "SELECT * FROM dl_fullremarks ";
$result = mysqli_query($conn, $sql);
foreach ($result as $row) {?>
<tr>
<td><?php echo $row['staff_id']; ?></td>
<td><?php echo $row['task_name']; ?></td>
<td><?php echo $row['task_remarks']; ?></td>
<td><?php echo $row['task_startdate']; ?></td>
<td><?php echo $row['task_enddate']; ?></td>
</tr>
    <?php
}
?>
</table>
</div>

标签: javascriptphp

解决方案


您可以先使用 SQL 获取数据,然后使用 PHP 关联数组对其进行组织:

$data = [];
foreach ($result as $row) {
    // Check if the current end date is part of the array. If not, add it
    if (!isset($data[$row['task_enddate']]) {
        $data[$row['task_enddate']] = [];
    }
    // Add the row to the assigned end date
    $data[$row['task_enddate']][] = $row;
}

$datanows 包含以下结构:

[
    '2020-11-14' => [
        ['staff_id' => 1, 'task_name' => 'name', // ...],
        ['staff_id' => 2, 'task_name' => 'other name', // ...],
    ],
    '2020-12-16' => [
        ['staff_id' => 3, 'task_name' => 'name', // ...],
    ],
]

您现在可以遍历它以显示您的模板 :) !

foreach ($data as $date => $rows) {
    echo '<div>';
    echo "<div>$date</div>";
    echo '<div class="row">';
    foreach ($rows as $row) {
        // Display your row data here
    }
    echo '</div></div>';
}

推荐阅读