Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何根据结束日期显示组数据?_Javascript_Php - Fatal编程技术网

Javascript 如何根据结束日期显示组数据?

Javascript 如何根据结束日期显示组数据?,javascript,php,Javascript,Php,我有一张如下表: 如何使用新表显示基于任务结束日期的数据。也就是说,全部 由task\u endtime设置的组结果: SELECT*FROM dl\u full备注 其中staff_id='1' 按任务排序\u结束时间 当上次保存的task\u endtime更改时,打印标题。所有其他行都按示例中的方式打印 $prev\u endtime=null foreach($行中的结果){ 如果(日期('Y-m-d',$row['taks\U endtime'])!=$prev\U endtime

我有一张如下表:

如何使用新表显示基于任务结束日期的数据。也就是说,全部
task\u endtime设置的组结果

SELECT*FROM dl\u full备注
其中staff_id='1'
按任务排序\u结束时间
当上次保存的
task\u endtime
更改时,打印标题。所有其他行都按示例中的方式打印

$prev\u endtime=null
foreach($行中的结果){
如果(日期('Y-m-d',$row['taks\U endtime'])!=$prev\U endtime){
回显“此处格式化的日期”;
$prev_endtime=date('Y-m-d',$row['task_endtime']);
}
回声“行单元格基尔”;
}

您可以先用SQL获取数据,然后用PHP关联数组组织数据:

$data=[];
foreach($结果为$行){
//检查当前结束日期是否是数组的一部分。如果不是,请添加它
如果(!isset($data[$row['task\u enddate']])){
$data[$row['task_enddate']]=[];
}
//将行添加到指定的结束日期
$data[$row['task\u enddate'][]=$row;
}
$data
nows包含以下结构:

[
    '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($date=>$rows的数据){
回声';
回显“$date”;
回声';
foreach($行作为$行){
//在此处显示行数据
}
回声';
}

这取决于您想从哪里进行排序,从您的查询、后端还是前端?@AngeLOL感谢您的积极回复。您附上了我可以尝试的任何方法,并让您知道反馈。这是一个更改您的查询的问题。其他一切都保持不变。如果“结束日期”列的数据类型为
datetime
,则可以执行一个简单的查询,如
“从表名称中选择*,其中结束日期=$end\u日期”
。如果您需要一些表单排序,那么您可以在查询结束时添加
按列排序_nameasc | DESC
。我尝试了您的提示,但它只显示每个结束日期的一条记录。。。那么如何才能克服这个问题呢?嗯。。请检查结果是否包含正确的数据。我们希望看到所有按
task\u endtime
分组的记录(例如在phpMyAdmin中)。哦似乎我在代码中发现了一个bug。我比较日期和时间,但我们只需要比较日期部分。在答案中添加修改。我认为“GROUPBY”子句选择所有记录,并按结束日期对其进行分组,只显示该组中的第一条记录,而不显示根据结束日期的所有记录group@Luco,即使是这样,我也没有使用聚合函数,所以每个记录都是一个组,所以它们应该按
task\u endtime
排序。但是,让我们将
GROUP BY
替换为
ORDER BY
。尝试调试
foreach
。它应该可以工作,因为algo很简单。
标题
行仅在与上一行不同时才打印。所有其他行都按示例中的方式打印。您的提示似乎工作正常,但嵌套循环有问题。你能帮我通过$data添加循环以显示我的模板吗?我用一个快速循环示例编辑了我的命令:)。你必须做一个嵌套循环。
                                         **Staff 2**
<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>
[
    '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', // ...],
    ],
]