来自数据库php的动态时隙预订检查

时间:2018-12-17 18:36:35

标签: php mysql datetime

我正在为客户开发预订系统。我被困在一个地方。给定日期的时隙是通过指定开始时间,结束时间,持续时间和休息时间来动态生成的。

    $start = new DateTime($stTime);
    $end = new DateTime($enTime);
    $interval = new DateInterval("PT" . $duration. "M");
    $breakInterval = new DateInterval("PT" . $break. "M");
    for ($intStart = $start; 
         $intStart < $end; 
         $intStart->add($interval)->add($breakInterval)) {

           $endPeriod = clone $intStart;
           $endPeriod->add($interval);
           if ($endPeriod > $end) {
             $endPeriod=$end;
           }
           $starttime =  $intStart->format('h:iA');
           $endtime = $endPeriod->format('h:iA');
           $timeslot = $starttime.' - '.$endtime;
       }

现在,它可以成功地生成如下的时隙,其中持续时间和中断时间均为15分钟: 09:00 AM-09:15 AM
09:30 AM-09:45 AM
10:00 AM-10:15 AM
10:30 AM-10:45 AM
11:00 AM-11:15 AM
11:30 AM-11:45 AM
下午12:00-下午12:15 当某人预订日期时,开始时间和结束时间将保存在数据库中。我可以使用以下查询来检查是否已有预订:

select * from bookings where starttime='$start' AND endtime='$end' AND bookingdate='$date'

现在的问题是持续时间是动态的。当我将持续时间更改为30分钟时。 新的时隙将像这样生成 09:00 AM-09:30 AM
09:45 AM-10:15 AM
10:30 AM-11:00 AM
11:15 AM-11:45 AM
12:00 PM-12:30 PM

现在,如果要检查是否已预订空位,则时隙与开始时间和结束时间现在与数据库中保存的时间不同。 我该如何解决这种情况?我希望15分钟的旧预订即使显示30分钟的新续订时间也显示预订。

更新 所需结果。 当我们在30分钟的时间之前从10:00 am到10:30 am进行预订时,需要15分钟的期望结果。 09:00 AM-09:15 AM
09:30 AM-09:45 AM
上午10:00-上午10:30 –预订 10:30 AM-10:45 AM
11:00 AM-11:15 AM
11:30 AM-11:45 AM
12:00 PM-12:15 PM

0 个答案:

没有答案