【问题标题】:PHP - Create a list of times, with those times where an event is scheduled are given a different classPHP - 创建一个时间列表,其中安排事件的时间被赋予不同的类
【发布时间】:2013-10-08 05:44:53
【问题描述】:

我想以表格的形式创建一个时间列表,从上午 9 点到晚上 9 点,以 30 分钟为间隔。对于我安排了活动的每个间隔,我希望单元格为红色,而对于房间空闲的单元格,我希望它们为绿色。

到目前为止,我只能列出房间的使用时间,但我需要在绿色框中填写可用时间。到目前为止,这是我的代码。 :

foreach ($events[$event_day] as $event) {

    $meetstatus = $event['status'];
    $start = $event['time1'];
    $end = $event['time2'];

    $tStart = strtotime($start);
    $tEnd = strtotime($end);
    $tNow = $tStart;
    if ($event['roomchoice'] == 'Meeting Room') {
        while ($tNow <= $tEnd) {
            $time = date("H:iA", $tNow) . "\n";
            $calendar .= '<tr><td class="meeting-' . $meetstatus . '">' . $time . '</td></tr>';
            $tNow = strtotime('+30 minutes', $tNow);
        }
    }
}

【问题讨论】:

  • 听说过 Cron 吗? help.ubuntu.com/community/CronHowto
  • if($meetstatus == 'busy'){//red} else {//green}
  • 如果 $meetstatus 具有正确的值,则应该没有问题。您正在使用 css 类名在视觉上区分案例,当房间空闲时,$event['status'] 的值可能与您期望的不同。你可以移动 $meetstatus... $tNow = $tStart;阻塞到 if 块中,没有理由运行不会做任何事情的代码。

标签: php css web-applications


【解决方案1】:

我了解您的间隔可能比事件多。如果这是真的,你的外循环需要间隔而不是事件:

$strintervalstarts=array('9:00','9:30',...)
foreach ($strintervalstarts as $strintervalstart) {
  $intervalstart=strtotime($strintervalstart);
  $intervalend=...

...需要用你的代码替换

我相信,从那里开始很容易。但是,您可能需要更多提示:

  • http://php.net/manual/de/function.date-add.php(日期,计算时间间隔的时间)
  • 您需要自行定义您的颜色编码是关于“此事件完全在一个区间内”还是“该事件触及区间,但超出了区间(部分重叠)”
  • > 根据您的决定,您需要一个 if 将 $tStart 与 $intervalstart 相关,将 $tEnd 与 $intervalend 相关

【讨论】:

  • 让外部循环遍历时间并在其中使用 foreach 循环来检查匹配时间正是我需要让它工作的技巧。
猜你喜欢
  • 1970-01-01
  • 2014-05-19
  • 1970-01-01
  • 1970-01-01
  • 2022-12-09
  • 1970-01-01
  • 1970-01-01
  • 2021-08-01
  • 2022-01-22
相关资源
最近更新 更多