我正在與時間安排項目,我可以按時間安排材料,我真的很困惑我如何追蹤時間範圍內的時間衝突。我與很多(我認爲)算法合作,但仍然沒有運氣。我的大腦飽和,這就是爲什麼我問在這裏誰能幫助我的人。
在php/mysql中跟蹤時間衝突的正確算法是什麼?
所以我在我的數據庫中的這些數據:
CREATE TABLE schedule_dummy
(
`materialID` int,
`date_reserve` date,
`start_time` time,
`end_time` time
);
------DB Table schedule_dummy --------
material | date | start_time | end_time
----------------------------------------------------------
7 | 2013-08-01 | 13:00:00 | 14:00:00
10 | 2013-09-01 | 13:30:00 | 14:00:00
----------------------------------------------------------
我用這個數據來檢查在特定時間特定材料的可用性。所以如果start_time
和end_time
的值是equal to
或in between
那些時間在數據庫中的材料將不可用。我嘗試了這麼多的查詢,但不適用於很多情況。
以下是我迄今嘗試的一些查詢。
$sql = "SELECT materialID
FROM schedule_dummy WHERE (date_reserve = ?)
AND (? BETWEEN start_time AND end_time
OR ? BETWEEN start_time AND end_time)";
而且
//I've tried this query but in some cases doesn't work dunno if I'm missing something.
$sql = "SELECT * FROM schedule_dummy
WHERE date_reserve = ?
AND start_time >=? AND start_time <=?";
,這裏是我的PHP代碼注:我使用的是笨:
$start = date("H:i:s", strtotime($this->input->post('start')));
$end = date("H:i:s", strtotime($this->input->post('end')));
$date_reserve = $this->input->post('date_reserve');
$id = $this->input->post('id');
//$sql = "SELECT materialID FROM schedule_dummy WHERE (date_reserve = ?) AND (? BETWEEN start_time AND end_time OR ? BETWEEN start_time AND end_time)";
$sql = "SELECT * FROM schedule_dummy WHERE date_reserve = ? AND start_time >=? AND end_time <=?";
$query = $this->db->query($sql,array($date_reserve,$start,$end));
$ids = array();
if($query->num_rows() > 0){
foreach($query->result() as $rows){
$ids[] = $rows->materialID;
}
}
$data = array();
$n = count($ids);
$idz = array();
if($n > 0){
$q = $this->db->select('*')->where_not_in('id',$ids)->where('cid', $id)->get('materials');
if($q->num_rows() > 0){
foreach($q->result() as $row){
$data[] = $row;
}
}
}else{
$q = $this->db->select('*')->where('cid',$id)->get('materials');
if($q->num_rows() > 0){
foreach($q->result() as $row){
$data[] = $row;
}
}
}
return $data;
那麼任何人都可以,誰知道一些算法來跟蹤時間衝突?這樣我可以檢索我的數據庫中的可用材料?謝謝!
我已經試過了老兄它不在一段時間內工作。 – leonardeveloper
好的,現在我們正在某個地方。您正在嘗試的確切時間是什麼?應該與之匹配的數據行是什麼? – Fluffeh
E.g. start_time = 13:30:00 and end_time = 14:00:00 – leonardeveloper