我有以下表:检查资源预留可用性
id | rsvp_date | return_date | user_id | car_id
其中ID是PK,rsvp_date & RETURN_DATE是DATETIME邀请,USER_ID & car_id被FK分别用户表和汽车表。
我想要做的是检查每次用户想要预订。即检查该查询归结为(此查询中获取的由功能checkAvailability()调用:
SELECT id
FROM `car_reservation`
WHERE ('2014-10-06 07:00:00' BETWEEN rsvp_date AND return_date)
AND car_id = 5;
我提到的功能:
function checkAvailability($datetime, $id = null){
$sql = "SELECT id
FROM `car_reservation`
WHERE ('".$datetime."' BETWEEN rsvp_date AND return_date)
AND car_id = ".$id;
$query = $this->db->query($sql);
// echo "<pre>"; print_r($this->db->last_query());die();
if($query->num_rows() > 0){
return FALSE;
}else{
return TRUE;
}
}
凡在指定日期将对阵rsvp_date匹配, 。RETURN_DATE列和日期是从现场的形式拍摄(有2场开始日期和返回日期)
当前的代码不工作,我希望它是例如:
。- 旅客#1:预留车载A 7点00分00秒为2014年10月6日之间2014年10月6日10:00:00 [有效]
- 旅客#2:预留汽车2014-之间乙10-06 07:00:00 去2014-10-06 10:00:00 [有效期]
- 客人#3:预约车A在 2014-10-06 08:00:00到2014-10- 06 11:30:00 [不可用,由于开始 时间不可用]
- Guest#4:在2014-10-06 06:00:00之间预约车B到2014-10-06 14:00: 00 [有效,但不是假设。由于Guest#2已经在07:00:00 - 10:00:00之间预订了 ]。
任何人都可以帮助我改进我的代码,当最后一个条件在预订时间之后已经有预订时会返回False吗?我发现这篇文章,但有一个困难的理解,我正在寻找一个类似的方法只是简单的。 http://www.codeproject.com/Articles/168662/Time-Period-Library-for-NET
编辑:
这张照片想象的一切,我想现在我只需要在每个列标题,如为实现一个函数(那些谁都有复选标记)。
您只能检查一个特定时间点“2014-10-06 07:00:00”,这是在“2014-10-06 06:00:00”和“2014-10-06 14:00:00之间'。所以一切正常。但是您必须检查计划预订的开始日期和结束日期。 – TiMESPLiNTER 2014-10-06 09:25:01
@TiMESPLiNTER我想我理解你的概念,我只是不知道该怎么做。我是否已针对每个小时范围检查计划预订的开始日期和结束日期? – Jeremy 2014-10-06 09:29:59
请参阅下面的答案。 – TiMESPLiNTER 2014-10-06 09:45:43