php - 在 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);
解决方案
推荐阅读
- php - 在php中将变量传递给graphql
- rxjs - 如何一个接一个 RxJS 向服务器发送请求?
- netsuite - 以不同方式显示 NetSuite 非活跃客户?
- json - 错误:“json-to-properties”:$PATH 中找不到可执行文件:未知
- c# - 关闭表单/再次打开后需要保持调整后的 datagridview 列的值
- javascript - 尝试将对象数组按降序排序到一个键(名称),并希望带有大写字母的数据首先出现在 vuejs
- mysql - 存储 SQL 查询的结果并在其上应用分区以查找每个用户的前 3 个条目
- python - 如何使用选定的空格 Python 分割字符串
- mysql - 转换 SQL 查询 XML -> JSON
- apache-spark - Spark 数据集:数据转换