CG 數位學習網 > PHP 教學



測試網頁

教學文件

問卷調查可以採用「記名」與「不記名」的方式,但是網路匿名特性會降低問卷資料的可信度,因此網路上的問卷調查通常會要求訪客登入,這次將會要求訪客輸入 Email 信箱進行簡易認證,掌握開發流程之後可以進一步整合會員登入系統。

開發功能上比較單純的系統時,通常僅需使用單一資料表即可,而在開發比較複雜的系統時,使用多個資料表不但節省儲存空間,還可以維持系統的執行效能!本教學將探討使用 Dreamweaver 製作問卷調查∕網路投票系統。如果只使用一個資料表,因為部份的資料內容是相同的,則會產生下圖所示的情形:

 

重複的資料會造成空間的浪費,同時也會增加維護的成本,影響系統的執行效能。因此在資料結構的規劃階段,先將問卷調查 / 網路投票的資料分別儲存於不同資料表,查詢與分析資料時再將資料連結。 如果我們將剛才的問卷調查 / 網路票選資料整理後,分成 2 個資料表:

 

從上圖可以看到重複的資料已經減少,這種簡化稱為「資料庫正規化」。專案的架構到達一定規模之後,經常運用資料表的關聯。例如在購物網站的「客戶資料」與「訂單」是分別放在不同的資料表,因為客戶資料可能會變動,例如更換電話號碼、寄送地址、電子信箱等,但是同一位客戶可能會多次訂購商品,如果將客戶資料寫入每一筆訂單記錄將會佔用較大的空間,資料庫變得龐大時運作效率也會受到影響,而且如果需要修改客戶資料時,原本寫入每筆訂單的客戶資料,是否也必須費時逐筆修改呢?因此在規劃資料庫結構時,姿料庫正規化是相當重要的工作。

簡單說明資料結構之後,開始規劃問卷調查∕網路投票系統的專案規劃,此系統採用彈性化設計,管理者可以同時進行多個問卷調查。

使用的 2 個資料表儲存於網站資料庫,說明如下:

 

問卷調查資料表

.vote_ID ( SMALL ) 問卷調查的編號

.vote_name ( TEXT ) 問卷調查的名稱

.vote_date ( DATE ) 記錄問卷調查的建立時間,使用 PHP 的日期函數取得系統時間的隱藏欄位 <?php echo date("Y-m-d H:i:s"); ?>

.vote_close ( DATE ) 設定問卷調查截止時間(使用 <input type="date"... > 日期欄位 Google Chrome、Microsoft Edge 瀏覽器可支援)

 

問卷調查選項資料表

.option_ID 問卷選項編號

.vote_ID 問卷調查的編號

.option_name 問卷調查的選項名稱

.vote_count 得票數

 

問卷調查系統網頁

.index.php 系統首頁

.admin.php 後端管理界面

.vote_add.php 新增問卷調查

.option_add.php 建立問卷調查選項

.vote_list.php 問卷調查管理網頁

.vote_edit.php 修改問卷調查

.vote_delete.php 刪除票選活動

 

製作新增問卷調查的網頁

現在因為專案剛開始製作,當然沒有任何問卷調查的記錄,所以先製作 vote_add.php 網頁新增票選活動,這是屬於後台管理的網頁,所以並不開放給訪客瀏覽。

這個網頁提供了建立問卷調查的表單,利用一個 vote_close 欄位儲存問卷調查的截止時間,新增「插入記錄」的伺服器行為,新增問卷調查後,將會前往 option_add.php 網頁輸入問卷的選項。

注意 option_add.php 網頁的內容會在稍後製作,先測試 vote_add.php 網頁的功能是否能夠正確執行。

因為 option_add.php 網頁目前並不存在,先用瀏覽器的「回上一頁」重複新增幾筆問卷調查活動。

 

製作問卷調查的管理網頁

剛才的測試已經新增一些問卷調查,接著製作 vote_list.php 管理網頁,讓管理者可以檢視所有問卷調查活動,並能修改名稱、刪除不使用的問卷。

首先在網頁上建立表格,欄位標題是「問卷調查活動」、「截止日期」、「管理功能」。

表格的資料會在瀏覽網頁時從資料庫取得,因此需要建立資料集,建立 rs_vote 資料集用來查詢「問卷調查活動」。

建立 rs_vote 資料集,將排序設為 vote_ID = 遞減,讓問卷調查按照日期排列,最新的問卷顯示於網頁最上方的位置。

 

將資料表的項目拖曳到表格的對應位置,「管理功能」下方增加「修改」與「刪除」的連結按鈕。

目前的網頁只會顯示第一筆問卷調查,選取表格的第 2 列,透過「伺服器行為」面板新增「重複區域」,設定「顯示所有記錄」。

設定重複區域之後 Dreamweaver 設計檢視將會顯示「重複」標籤,切換至「即時」檢視或透過瀏覽器確認是否能夠顯示所有問卷。

若希望顯示目前共有多少項問卷調查,可在下方加入提示的文字,然後執行 [ 顯示記錄計數 > 顯示記錄總數 ] 插入記錄總數。

建立修改問卷調查 vote_edit.php 網頁,系統可以進行多項問卷,必須知道要修改的是那一項,使用 URL 參數的方式製作。

我們需要從 vote_list.php 網頁傳遞問卷調查的編號 vote_ID 到 vote_edit.php 網頁,讓後面網頁的資料集能取得正確的資料。

按下「參數」按鈕,設定傳遞的 URL 參數。

 

製作修改問卷調查的網頁

製作 vote_edit.php 管理網頁,讓管理者可以修改問卷調查活動名稱、截止日期。

這個網頁需要從資料庫取得現有的資料,因此需要建立資料集,不過只查詢一筆需要修改的記錄。

篩選器設為 vote_ID = URL 參數,接收來自 vote_list.php 傳遞過來的參數,即 vote_ID 問卷調查編號。

 

表單內新增隱藏欄位 vote_ID ,設定此欄位的值等於資料集的 vote_ID ,功能是為了執行更新記錄。

 

實際測試看看,現在應該可以修改問卷調查,但是缺少操作上的反饋,讓人不確定是否已經改好?

 

修改更新記錄,將「更新後,請前往」改為 redirect.php?msg=修改完成&page=vote_list.php

 

實際上 redirect.php 網頁是提供給所有需要反饋訊息的網頁共用的,可自訂訊息內容與前往的網頁。

可透過繫結面板執行 [ 新增 > URL 參數 ] 並輸入參數名稱。不過也可以用修改程式碼的方式完成。

 

以下是 redirect.php 網頁的程式碼:

 

建立刪除問卷調查 vote_del.php 網頁,管理者可刪除選取的問卷,同樣使用 URL 參數的方式傳遞要刪除的記錄編號。

我們需要從 vote_list.php 網頁傳遞問卷調查的編號 vote_ID 到 vote_del.php 網頁,讓後面的網頁能夠刪除正確的資料。

 

新增刪除記錄的伺服器行為。

 

 

option_add.php 網頁上方將顯示票選活動名稱,並提示輸入票選項目,輸入完全部票選項目後,按下「票選活動設定完成」即可離開。

步驟二

新增記錄,插入記錄後前往 option_add.php , 插入記錄後為什麼還要回到同一個網頁?因為票選活動通常會有多個選項,我們必須讓管理者建立這些選項。

在 option_add.php 會有 rsVote 與 rsOption 資料集,分別用來查詢「票選活動」與「投票選項」,請注意建立重複區域時別選錯了,否則會無法呈現正確的效果。

 

 

製作建立問卷調查選項的網頁

製作 option_add.php 網頁的內容,採用彈性化設計,讓管理者自行設定選項,可以不限制選項的數量。

先在 option_add.php 網頁上方顯示問卷調查 / 網路投票的名稱,提示管理者輸入問卷調查的項目,所有項目輸入完成之後,按下「票選活動設定完成」即可離開。

新增記錄,插入記錄後前往 option_add.php 網頁,因為問卷調查通常有多個選項,插入記錄後返回相同的網頁,可以讓管理者很方便的建立所有的問卷選項。

在 option_add.php 網頁會有 rs_vote 與 rs_option 資料集,用於在網頁上顯示這個「問卷調查活動」,已經新增的「問卷調查選項」,後者需要建立重複區域,注意不能選錯否則無法顯示正確的結果。

使用 PHP 提供的 COUNT() 函數,可以計算相同欄位的記錄有幾筆。

 

 



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