我有一个表格,我填写了数据库信息。这个表如下
接下来,我的概述页面上有一个表格,如下所示
但是我怎么能在15:00添加这个名字呢?
这是我使用的代码。
$matrix = array();
// matrix vullen
while ($row = $res->fetch_assoc()) {
if ($row['datum_van'] != $date) {
$date = $row['datum_van'];
$matrix[$date] = $times;
}
$matrix[$date][$row['tijd_van']][] = $row['name'];
$matrix[$date][$row['tijd_tot']][] = $row['name'];
}
// de tabel beginnen
$var = '<table class="striped">';
$var .= '<tr class="header" id="ax">';
$var .= '<td id="a_datum">Datum</td>';
for($i=9; $i<24; $i++) {
$var .= '<td>' . $i . ':00</td>';
}
$var .= '<td>geen eindtijd</td>';
$var .= '</tr>';
// de matrix uitlezen
foreach ($matrix as $datekey => $timearray) {
$var .= '<tr><td>' . $datekey . '</td>';
foreach ($timearray as $names) {
$var .= '<td>';
if (count($names) > 0) {
$var .= implode('<br>', $names);
}
else {
$var .= ' ';
}
$var .= '</td>';
}
$var .= '</tr>' . PHP_EOL;
}
$var .= '</table>';
echo $var;
答案 0 :(得分:1)
根据您将名称填充到$ timearray的方法(代码未显示),您需要再添加一个额外的检查。您需要检查是否存在名称条目,其中开始时间在当前时间之前,结束时间在当前时间之后。像这样的简单检查将有助于正确填充$ timearray:
if $cur_time < $time_start and $cur_time > $time_end
// Add the name to the time-array
其中$ cur_time是您评估的时间,time_start和time_end是您存储在数据库表中的值。
答案 1 :(得分:0)
在不知道您的完整数据集的情况下...检查时间是否大于(或等于)开始时间并且小于(或等于)结束时间,如果两种情况都为真,请将此人的姓名放入字段。
答案 2 :(得分:0)
问题是你只能用这个代码
为这两个单元分配它们的值$matrix[$date][$row['tijd_van']][] = $row['name'];
$matrix[$date][$row['tijd_tot']][] = $row['name'];
您需要检查这两个值van
和von
之间的时间,并设置两者之间的小时名称。
这可以通过以下方式完成
$start_timestamp = strtotime($row['tijd_van']);
$scnds_between = strtotime($row['tijd_tot']) - $start_timestamp;
$hrs_between = floor($scnds_between / 3600) - 1;
// -1 because the first hour is already in matrix
for ($i=1; $i<=$hrs_between; ++$i) {
$new_date = date("Y-m-d H:i:s", $start_timestamp+($i*3600));
$matrix[$date][$new_date][] = $row['name'];
}
仅当tijd_*
与datum_*
值相似且能够(或修改为)与strtotime一起使用时才有效