首页 > 解决方案 > 在 MySQL 查询之间在 PHP 中无法正常工作

问题描述

我有一张“预订”表,上面有商店的详细信息(开始时间,存储的关闭时间)用于预订/预约。
我想创建一个每 30 分钟的时间段,并希望在每个时间段检查商店的可用性状态。

这是一张“预订”表:

id      shop_id         booking_date                start_time          end_time
1       3               15-7-2019                   10:01               11:30   

现在我得到以下结果。还应预订第一个时间段(在查询中不工作之间)

Array
(
    [1] => Array
        (
            [start] => 10:00
            [end] => 10:30
            [status] => availiable
        )

    [2] => Array
        (
            [start] => 10:30
            [end] => 11:00
            [status] => booked
        )

    [3] => Array
        (
            [start] => 11:00
            [end] => 11:30
            [status] => booked
        )
}       
...     

这是我的代码:

$duration="30";
        $start="10:00AM";
        $end="07:00PM";
        $start = new DateTime($start);
        $end = new DateTime($end);
        $start_time = $start->format('H:i');
        $end_time = $end->format('H:i');
        $i=0;

    while(strtotime($start_time) <= strtotime($end_time)){
    $start = $start_time;
    $end = date('H:i',strtotime('+'.$duration.' minutes',strtotime($start_time)));
    $start_time = date('H:i',strtotime('+'.$duration.' minutes',strtotime($start_time)));
    $i++;
    if(strtotime($start_time) <= strtotime($end_time)){
        $time[$i]['start'] = $start;
        $time[$i]['end'] = $end;
    }

    $todayDate = date('d-m-Y');
    if(strtotime($start_time) <= strtotime($end_time)){
        $time[$i]['start'] = $start;
        $time[$i]['end'] = $end;
        }

$query=$this->db->query("SELECT `id`  FROM `booking` WHERE booking_date = '$todayDate'  AND
( `start_time` <= CAST('$start' AS TIME)  AND `end_time` >= CAST('$end' AS TIME) )");

if ( $query->num_rows() > 0 )
            {
                $rows = $query->result_array();
                $time[$i]['status'] = 'booked';
            }
        else
        {
                    $rows = $query->result_array();
                    $time[$i]['status'] = 'availiable';
        }       
}
        print_r($time);

标签: phpmysqldatetime

解决方案


推荐阅读