预订计划显示单个字段中预订时间之间的可用时间

时间:2013-10-21 18:30:12

标签: php time

目前我只显示预订时间,但我现在正在寻找一种方法来显示预订时间之间的可用时间。这是我使用的标记。

                  $stmt = $pdo->prepare('SELECT * FROM bokningar WHERE frisor = :frisor AND datum = :datum ORDER BY datum, tid');  
                  $stmt->execute(array(
                    ':frisor' => $_GET['id'],
                    ':datum' => $dag
                  ));

                    while($row = $stmt->fetch()) {
                        echo goes here etc
                    }

对于每个$行,有$ row ['tid'](开始时间)和$ row ['tid_slut](结束时间)

这就是我想要的样子:

07:00-10:00
Available

10:00-12:00
Booked

12:00-13:20
Booked

13:20-14:50
Available

14:50-18:00
Booked

例如。 我最简单的方法是如何处理这个?

提前致谢!

编辑:忘了添加开始时间的变量(例如07:00):$ arbetstider_idag [0]和结束时间:$ arbetstider_idag [1]

1 个答案:

答案 0 :(得分:1)

循环内部存储结束时间变量。在下一次迭代中,比较当前开始时间和存储的结束时间。如果不同,从结束到开始的时间是免费的(因为否则它将在数据库中),所以从最后一个到当前开始的回声时间可用。

示例:

  $start_time = $arbetstider_idag[0];
  $end_time = $arbetstider_idag[1];

   while($row = $stmt->fetch()) {

    if ($start_time != $row['tid'])
      echo "{$start_time}-{$row['tid']}<br>Available<br><br>";

    echo "{$row['tid']}-{$row['tid_slut']}<br>Booked<br><br>";

    $start_time = $row['tid_slut'];
  }

  if ($row['tid_slut'] != $end_time)
    echo "{$row['tid_slut']}-{$end_time}<br>Available<br><br>";