2011-12-05 113 views
1

我需要創建一個帶有PHP和MYSQL的在線預訂系統,但是當涉及到創建數據庫表結構時,我一直陷入困境。時區預約系統

這是表結構我到目前爲止有:(僞)

TABLE: 'times' 

time_id | int | AI 
time | datetime? (is this the best approch, if so how would the PHP code look for the datetime format?) 
available | boolean 


TABLE: 'bookings' 

booking_id | int | AI 
client_id | int | foreign key 
manager_id | int | foreign key 
time_id | int | foreign key 

在系統內,我希望能夠到:

  • 管理面板中創建一個新的日期,然後系統的用戶可以創建預定時間段(如果可用)。

時報只能是下列選項之一:(這是在那裏我,如果我應該存儲時代的一個困惑以下爲DATETIME,或Unix時間戳等)

3:05 3:10 3:15 3:20 3:25 3:30 3:35 3:40 3:45 3:50 3:55 4:00 4: 05 4:10 4:15 4:20 4:25 4:30 4:35 4:40 4:45 4:50 4:55 5:00 5:05 5:10 5:15 :20 5:25 5:30 5:35 5:40 5:45 5:50 5:55 6:00

有人能幫助我嗎?

在此先感謝。

+0

只是爲了將來,使用管道,而不是格式化您的表列 - 。使閱讀更容易。 – Layke

+0

管道添加,感謝您的建議。 –

+0

你在回答有關TIME的問題,然後定義日期時間。在MySQL [時間類型](http://dev.mysql.com/doc/refman/5.0/en/time.html)中存在。預訂表是否應該是時間表的外鍵?如果是的話,是時間和預訂1:1的關係船?並有可用的計算領域? – danihp

回答

3

- 編輯 - 根據您最近的編輯,看起來您想要顯示預設時間的選擇列表,然後將選定時間插入數據庫。如果這是正確的,那麼時間戳將不會對您有所幫助,因爲時間戳是1970年1月1日到2038年1月19日的特定時間。

對於您的示例,我們可以硬編碼時隙,請考慮以下內容:

class Time 
{ 
    const TIMESLOT_MIN = 3; 
    const TIMESLOT_MAX = 6; 

    public static function getTimeslots() 
    { 
     $timeslots = array(); 

     for ($i = self::TIMESLOT_MIN ; $i <= self::TIMESLOT_MAX ; $i++) { 

      for ($j = 0 ; $j < 60 ; $j +=5) { 

       if ($j < 10) { 
        $j = '0'. $j; 
       } 

       $timeslots[] = $i . ':' . $j; 
      } 
     } 

     return $timeslots; 
    } 
} 

var_dump(Time::getTimeslots()); 

--Original-- 使用任一時間()從PHP或現在()從MySQL將確保一致的日期/時間存儲在格式UNIX時間戳存儲。通過這種方式,您的應用程序可以安全地假定對該日期列的任何引用都是時間戳並相應地設置爲有意義的視圖格式。

的另一個考慮是,以確保您的所有時間戳都存儲在UTC(通用時間碼),這樣你就不必轉換時間戳進入數據庫,只能出來的數據庫。在操作系統級別和數據庫級別對系統進行基準化將使您的時間更輕鬆,就時區轉換而言。

您可能還需要尋找到CURRENT_TIMESTAMP,它可以讓你每個表一列設置爲當前時間戳,是這樣的:

ON UPDATE CURRENT_TIMESTAMP 
+0

我剛剛修改了我的問題,請你看看它,請配偶? –

+0

@JoelMurphy:更新的解決方案。 –

+0

謝謝你,夥計,我的系統現在工作:) –

0

我自己比較喜歡UNIX時間戳:http://en.wikipedia.org/wiki/Unix_time,這樣,我只是存儲爲一個整數反正。

+0

謝謝@Matthew。我現在將查看unix timestamp數據類型。 –

+0

我剛剛修改了我的問題,請你看看它,請配偶? –