2010-08-29 79 views
0

我還有一個案例。
我買了27個席位
總線那麼,如果人們挑座4,所以沒有人可以採取的座位4
座位巴士預訂PHP和MySQL

我的問題:

  1. 設計數據庫如何包含27個席位?我想用循環直到27日用PHP
  2. 如何在窗體中顯示,選擇表單包含未預訂的座位?
  3. 如何防止其他人乘坐同一座位?

謝謝。

+1

嗯,這些都是很基本的,在同時很複雜的問題。也許首先專注於數據庫設計。 (你也許會不僅有座位,你會希望在某些時候有多個總線) – 2010-08-29 16:24:57

回答

1

數據庫: 有一個BusType表,其中包含座位數,成本等的屬性。 擁有一個BusBookedSeats表,該表將與相關巴士保持FK關係,並保持其剩餘和/或預訂的座位數總數。

形式: 查詢數據庫並獲取總座位數 - 預訂座位數。添加進一步的驗證以顯示座位的位置。

預防: 如果查詢返回大於0的值(意思是在此例中採用),則警告用戶它已被採用並通知他們再次坐下。或者甚至不向他們展示座位。

0

爲你的數據庫:

  1. 你有公共汽車和可用座位數表
  2. 您有預約表
  3. 你有這對一個特定的有保留的關係的表座椅特定總線上

如何顯示可用座位:

  1. 做一個查詢所有保留的席位
  2. 畫出總線的圖片和標記所有保留席位

如何防止雙重預約: 你需要某種形式的交易程序,但它是很難說,何時鎖定座位以及何時解鎖座位(例如,用戶在一段時間內沒有響應)。通常你只能在最後一步保留它。因此,確保您沒有太多步驟或者選擇是最後一步,您可以減少衝突次數。

這些確實只是一些非常基本的提示,但是整個問題太複雜了。如果您有任何具體問題,可能需要單獨提出。

0

從DB角度看,根據我瞭解你的質量要求的,我會建議一些對這些行: -

  1. 總線表 - 包含每個單獨的總線的條目。有一列表示該巴士的座位容量。

  2. 用戶表 - 包含誰可以預訂一個總線上的座位每個用戶的條目。 BusUser Table - 包含公交車座位記錄的交易表格,例如:如果公交車X的27 =座位容量,該表格將包含27條記錄 - 每條記錄都包含相應的座位號碼。

從UI的角度來看,您將顯示總線用戶內容。當用戶選擇的UI上的一個記錄,您的用戶在BusUser表中記錄相關聯。 BusUser - 將有一列指示與該總線實例關聯的用戶。

多數民衆贊成的總體思路。希望爲您提供一些指導,以便從頭開始。

0

確保您具有某種主鍵,包括總線離開時間等,以及每個總線(複合主鍵)的唯一標識符。你只能有總線的唯一標識符,這將限制每個總線只騎一次:)

的27個座位的巴士,我認爲應該由你的應用程序處理的。或許,每輛公共汽車首先插入27排,並在有人預訂座位時更新。這樣,您可以讓用戶選擇他們想要的座位。 (應該從你的GUI完成)。

當然,您應該擁有每個座位的狀態,您可以使用它來確定是否保留。

這是一個非常基本的想法,我也沒有任何包含圖表或那樣的話。我希望我沒有破壞你自己設計數據庫的機會:)

0

數據庫謊言在Sane建議的是一個好主意。停止重複預訂並不是那麼困難 - 你只需要選擇一種方法。

  1. 排隊系統 - 當人們訂購你把它們添加到隊列的尾部,然後有一個單獨的腳本來拉人從頭部。然後,您可以逐一評估每個訂單。

  2. 數據庫級別 - 如果你打算使用MySQL你probabaly更好使用像InnoDB的一個引擎,支持交易(介紹:http://www.databasejournal.com/features/mysql/article.php/3382171/Transactions-in-MySQL.htm