2012-04-24 135 views
1

我有問題想想這個低谷與PHP & Mysql。我已閱讀How to implement check availability in hotel reservation system和更多,但他們看起來不同。預約系統日期

我必須制定一個預約系統,在這個預約系統上可以預約6小時的傳送室,所以當用戶預約一個日期,例如24/04/2012他然後選擇出租的開始時間(00:00-06:00, 06:00-12:00, 12:00-18:00,18:00-24:00).並且用戶想要租用房間的總小時數(6,12,18等)。

日期存儲爲整數(時間戳)。

我有兩個問題,我不知道如何接收一個月內所有可能的房間還沒有預訂的日子,以及如何檢查是否有新的預訂。

我知道如何計算起始日期和結束日期的用戶輸入,但我不能找到正確的MySQL查詢PHP檢查可用性。

這可能很簡單,但不知何故,因爲結束日期總是可變的我只是無法找到答案。

在此先感謝你們!

編輯表結構:保留

 
id int(11)   
user_id int(11)  
reservation_name varchar(255)  
start_date int(11)   
end_date int(11)   

我認爲保留是唯一一個相關

+1

這將有助於包括你的表結構。編輯你的問題並粘貼(在'

'標籤之間)'DESCRIBE表的輸出;'爲你的數據庫中的每個相關的'表'。 –
                        
                            
    eggyal
                                2012-04-24 19:18:22
                            
                        
                    

+0

表結構? – 2012-04-24 19:18:32

+0

對不起,沒有想到現在添加它。 – 2012-04-24 19:27:39

回答

1

你會發現它非常難以產生可用天在MySQL列表。相反,我建議您在所需的月份內選擇預訂日期的有序列表,然後在PHP中該月的所有日期循環,如果它與MySQL查詢中的下一個預訂日期相匹配,則跳過該日期。 this question的答案將幫助您構建您想要在PHP中循環的日期。在僞代碼:

$booked_days = sql(select all booked days in month order by day); 
for each $day in month { 
    if $day != current($booked_days) { 
     // $day is not booked 
    } else advance_next($booked_days); 
} 

要檢查是否有新的預訂是可能的,你可能想今天早些時候看看我的回答a very similar question

+0

我現在不能測試它,因爲我不在工作,但看到您在鏈接到的問題上生成的查詢與我在上面評論中提到的查詢類似,我相信您給了我正確的答案,似乎符合邏輯。非常感謝,我現在已經在這裏工作了大約8個小時。邏輯有時似乎很難.. – 2012-04-24 20:51:06