2015-10-10 137 views
1

我正在爲一家小酒店預訂/預訂系統。我對PHP很滿意,但對SQL不太好......我在表單中輸入了您的信息,房間數量以及使用日曆選擇抵達日期和退房日期。酒店客房預訂

現在一切都很順利,直到我必須檢查哪些房間可用,這讓我頭痛。有10間客房可以預訂。

我目前在MySQL中有一個存儲信息,日期,預訂ID和房間號/號碼的表。

你如何讓SQL檢查哪些房間可用而不是?

如果它看起來像

"SELECT * FROM bookings WHERE checkinDate >= '$formCheckin' 
AND checkoutDate <= '$formCheckout' " 

然後拿到roomID並計數?

任何幫助非常感謝!

+0

你真的應該製作一個房間表,並分配一個索引來標記它們是否被佔用,這會真的爲你放鬆一切。 – Akshay

+1

你看過本頁右側的一些「相關」問題嗎?他們可能會給你一些想法? –

+0

語法錯誤在這裏'checkinDate =>'你需要反轉這些符號。 '=>'不會做你認爲它做的事。 –

回答

2

如果你想知道,如果一個房間期間是可用的,那麼邏輯是這樣的:

SELECT r.* 
FROM rooms r 
WHERE NOT EXISTS (SELECT 1 
        FROM bookings b 
        WHERE b.roomid = r.roomid AND 
         b.checkinDate <= $formCheckOut AND 
         b.checkoutDate >= '$formCheckIn 
       ); 

我是否需要針對這兩個平等的比較沒有把握。邏輯是,如果沒有預訂在結帳日期之前開始,並且在簽入日期之後結束,則房間可用。

但是,對於十個房間,我可能會建議您每天保留一個房間的桌子,比如說未來十年(每年再增加一次)。這樣的表格不是很大,可能更容易理解如何使用它。另外,你可以處理一些事情,比如一對夫婦預定一個星期的房間,但前三天只有一個人在房間裏。

+0

我想你在子查詢 – FuzzyTree

+0

@FuzzyTree中缺少'AND b.roomId = r.Id'的內容。 。 。謝謝。 –