在sql中显示2小时之间的时间

时间:2013-10-13 09:43:03

标签: php sql datetime mysqli

我有一个表格,我填写了数据库信息。这个表如下

enter image description here

接下来,我的概述页面上有一个表格,如下所示

enter image description here

但是我怎么能在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 .= '&nbsp;';
            }
            $var .= '</td>';
        }
        $var .= '</tr>' . PHP_EOL;
    }
    $var .= '</table>';
    echo $var;

3 个答案:

答案 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'];

您需要检查这两个值vanvon之间的时间,并设置两者之间的小时名称。

这可以通过以下方式完成

$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一起使用时才有效