CG 數位學習網 > PHP 教學



本教學介紹使用 Dreamweaver PHP MySQL 開發一套診所預約系統,稍微修改後也適用於製作 PHP 專業髮型美容店的預約系統。

注意!當您開始規劃製作複雜的系統之前,應該儘量考慮到更多的可能性,否則實際上線後經常需要花費更多時間的修改!

 

PHP 預約系統的需求與規劃

客戶必須先登入後才能預約,所以需要線上會員系統,使用者的資料表名稱為「tb_user」,這部份的製作步驟請參閱前面的教學。

而此會員資料表也將同時用於管理診所醫師與服務人員的基本資料,但是透過 tb_user 資料表的 user_Level 欄位設定使用者的權限。

此預約系統需要能提供多位服務人員的線上預約服務,服務人員可以預排休假,當然客戶在服務人員的休假日是無法預約的。

每天將分割為多個不同的服務時段,若某個時段已有客戶預約的話,想再預約的客戶可以選擇排到後補,但只開放預約下 2 個月的日期。

此系統的核心是服務人員排班用的「tb_schedule_date」與「tb_schedule_time」資料表,服務人員可以預排休假的日期以及開放預約的時段。

tb_schedule_date 資料表

此資料表用於儲存服務人員的休假日期,因為預約系統需要讓多位服務人員使用,必須有一個欄位來記錄日期的索引。

稍後需要製作一個網頁,讓管理者可以按照日期檢視所有服務人員的休假,透過日期索引的相同值,篩選出同一天休假的服務人員。

schedule_ID (MEDIUMINT) 記錄編號

date_ID (SMALLINT) 日期索引,範圍從 1~356 (注意 2016 年是閏年有 366 天)

user_No (SMALLINT) 服務人員的編號

user_state (SMALLINT) 服務人員的狀態

 

tb_schedule_time 資料表

每筆記錄的 time_???? 儲存格用於記錄「服務人員的排休狀態」與「預約客戶的編號」。

說明:預設值 0 = 未設定;1 = 可預排;若是已預約則儲存客戶編號 ( user_No ) 。

管理者可以檢視所有美容師的排休日期

 

admin_schedule_date.php 網頁

此網頁用於管理服務人員的休假日期,從前面網頁傳來的 URL 參數 user_No 用於篩選顯示那一位服務人員的班表。

注意 tb_schedule_date 資料表的 date_ID 欄位只是日期編號,像 1 月 1 日等於「1」;而 12 月 31 日等於「365」,閏年的話則是「366」。

當然這樣的編號對使用者而言並不是很容易理解,若是一月份還好,像是編號 58 = 2016/2/27 這樣的換算可能就要看日曆算很久了。

所以另外建立一個 tb_date 資料表做為對照用,並透過 JOIN 讓網頁上不是以編號而是正確的日期顯示出來。

date_ID (SMALLINT) 日期編號,與 tb_schedule_date 資料表的相同。

date_Name (DATE) 範圍從 2016-01-01 到 2016-12-31 的日期。

date_Weekday (VARCHAR) 儲存每個日期是星期幾。

為了節省手動輸入的時間並且避免錯誤,使用 Excel 製作 CSV 檔並匯入 MySQL 資料庫(需注意編碼),這裡可以下載範例 > tb_date.csv

 

使用 JOIN 連接資料表

我們需要為 tb_schedule_date 資料表與 tb_date 資料表 建立關連,這部份透過修改資料集來達成。

注意!使用 Dreamweaver 建立的資料集有時會自已消失,可嘗試隨便建立一個新的資料集,或許就會出現了!

建立 rs_schedule_date 資料集,然後按下「測試」按鈕。

因為稍後需要使用多個 URL 參數,按下「編輯」按鈕進行修改。

將原本的名稱「colname」改為「colname1」,其他的欄位不做修改,然後按下「確定」按鈕。

當然在 SQL 的相對部份也要改為「colname1」。

接下來使用 JOIN 語法設定資料表的關聯,將原本的 SQL

SELECT *
FROM tb_schedule_date
WHERE user_No = colname1
ORDER BY date_ID ASC

改成這樣(實際上在資料集的對話框會因為字數較多而自動換行)

SELECT *
FROM tb_schedule_date, tb_date
WHERE tb_schedule_date.date_ID = tb_date.date_ID AND tb_schedule_date.user_No = colname1
ORDER BY tb_schedule_date.date_ID ASC

 

關於 JOIN 的語法,可參閱這個網頁 http://www.codedata.com.tw/database/mysql-tutorial-5-join-union/



~ CG 數位學習網版權所有 ~