预订方案在单个字段中显示预订时间之间的可用时间


Booking scheme show available time between booked times in a single field

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

                  $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都有一个$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]

在循环内存储变量的结束时间。在下一次迭代中,比较当前开始时间和存储的结束时间。如果不同,则从头到尾的时间是免费的(因为否则它将在数据库中),因此从上端到当前开始的回显时间可用。

例:

  $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>";