0

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

                  $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'](start time) 和 $row['tid_slut](end time)

这就是我希望它看起来的样子:

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]

4

1 回答 1

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>";
于 2013-10-21T19:44:54.503 回答