2014-12-29 78 views
0

這就是我需要:預訂系統的PHP MySQL的

打印員工的ID誰在一定的時間跨度具有可用性,如:from 28-12-2014 10:00 to 28-12-2014 11:00 這些員工可能會做根據它們在BD一些其他活動到這樣的畫面:Table of ongoing activities

我有什麼:

目前,我行通過這樣的比較,這些日期VS的一個,我需要,排:

$sql_reservas="SELECT * FROM `Reservas` WHERE `ID_Empleado`= 2"; 
     $result_reservas = mysqli_query($link,$sql_reservas);  
     if(mysqli_num_rows($result_reservas)>0){   
     foreach($result_reservas as $row_reservas) {   
     ongoing_start  = new DateTime("{$row_reservas['Inicio']}"); //28-12-2014 11:45 then 28-12-2014 09:45 
     ongoing_finish  = new DateTime("{$row_reservas['Libre']}"); //28-12-2014 13:45 then 28-12-2014 10:45 
     new_activity_start = $_POST['date'] //28-12-2014 10:00 
     new_activity_finish = $_POST['date2'] //28-12-2014 11:00 
     If(new_activity_start<ongoing_start && new_activity_finish<ongoing_start){ 
     //I have space before the ongoing activities 
     echo $row_reservas['ID_Empleado']; 
     }elseif(new_activity_start>ongoing_finish && new_activity_finish>ongoing_finish) { 
     //I have space after the ongoing activities 
     echo $row_reservas['ID_Empleado'];  
     }else{ 
     //overlaps with the compared one 
     echo "not available"; 

     }}} 

問題:

當只有一個預訂(如ID 3或4或5 ...)一切正常,但當有2個或更多的預訂(如與ID 2),它仍然會讓我預訂這個空間,因爲兩個正在進行的活動之一不會與請求的日期重疊

我希望你能幫助我解決這個問題。感謝

回答

0

我瞭解,你需要獲得該表中的所有員工ID,即在一段時間內免費,

有關使用between什麼?

試試這個:

select ID_Empleado FROM `Reservas` WHERE 
(CAST('$date' AS DATETIME) NOT BETWEEN Inicio and Libre) 
AND 
(CAST('$date2' AS DATETIME) NOT BETWEEN Inicio and Libre) 

$date$date2$_POST[]

說明值: GET員工在需要啓動至今,需要結束日期的未啓動日期間下跌ID活動的結束日期