Board logo

標題: 12-2-2 問卷程式網頁 [打印本頁]

作者: 小誌    時間: 2011-4-24 14:36     標題: 12-2-2 問卷程式網頁

12-2-2   問卷程式網頁
首先在問卷程式網頁中設定一個姓名的單行文字欄位,及一個填寫E-mail的單行文字欄位;姓名的單行文字欄位Name屬性就設定為name,而填寫E-mail的單行文字欄位Name屬性則設定為email:
  1. 姓名
  2. <INPUT Type=Text Name=Name size="20">
  3. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; E-Mail
  4. <INPUT Type=Text Name=email size="20">
複製代碼
在問卷程式網頁中最麻煩的部分就是如何把我們資料庫中的題目給讀取並顯示出來,因為在我們問卷表單的設計上為了配合題型的不同而分為單行文字方塊(Text)與單選按鈕(Radio),如果問卷題型為選擇題的話,我們必須列出備選的答案,而問卷題型若是問答題的話則必須有文字欄位供問卷填寫者填寫意見:
[attach]5815[/attach]
圖12-21  題型分類。

因此,我們必須先判斷我們問卷題目的題型,如果是選擇題的話,則三個答案選項的Name屬性都必須相同,而選項的屬性值(Value)則必須隨備選答案的不同而變更;若是問答題就比較好處理只要設定文字欄位的Name屬性就可以了。
作者: 小誌    時間: 2011-4-24 14:37

在各個題目答案的命名,我們都採用『No』加上『$fielddatas["題號"]』來命名,例如:問卷第一題,雖然有三個備選答案選項,但是它們的Name屬性都是『No1』:而備選答案選項的值則依我們資料庫中『選項』欄位的的值而變動!!
所以當程式網頁執行後,我們檢視網頁的原始碼將如下所示:
  1. <B>1.請問您贊成學校開辦營養午餐嗎?</B><BR>
  2. <INPUT Type=Radio Name=No1 Value=贊成>
  3. 贊成<BR>
  4. <INPUT Type=Radio Name=No1 Value=反對>
  5. 反對<BR>
  6. <INPUT Type=Radio Name=No1 Value=沒意見>
  7. 沒意見<BR>
複製代碼
在本範例中設定了兩種題型:選擇題與問答題,因此,我們必須根據資料錄的題型欄位來決定我們問題的顯示方式:
  1. <?
  2. while (($fielddatas=mysql_fetch_array($datalist)))
  3. {
  4. ?>
  5. <B><?=$fielddatas["題號"];?>.<?=htmlspecialchars($fielddatas["題目"]);?>
  6. </B><BR>
  7. <?
  8. if ($fielddatas["題型"]=="選擇")
  9. {
  10. for ($I=1;$I<=3;$I++)
  11. {
  12. ?>
  13. <INPUT Type=Radio Name=No<?=$fielddatas["題號"];?>
  14. Value=<?=$fielddatas["選項" . $I] ;?>>
  15. <?=htmlspecialchars($fielddatas["選項" . $I]);?><BR>
  16. <?
  17. }
  18. }
  19. else
  20. {
  21. ?>
  22. <INPUT Type=Text Name=No<?=$fielddatas["題號"];?> size="20"><BR>
  23. <?
  24. }
  25. }
  26. ?>
複製代碼
1.程式碼第2行:使用While迴圈敘述配合改變作用中資料錄位置的mysql_fetch_array()函數,將所有的問卷題目自資料庫資料表中讀取出來。
2.程式碼第8行:利用If判斷敘述來辨別資料錄『題型』欄位中所設定的問卷題目型式。
3.程式碼第10行:如果『題型』是選擇題,則利用For迴圈敘述列出各備選答案,請注意,本範例的備選答案只有三個,所以For迴圈的起始值為1,而終值為3。
4.程式碼第13~15行:列出備選答案的選擇鈕屬性值敘述是「<?=$fielddatas["選項" . $I] ;?>」,但是,在網頁中列印出選項說明文字的敘述則為「<?=htmlspecialchars($fielddatas["選項" . $I]);?>」。
5.程式碼第22行:如果『題型』是問答題則直接設定單行文字輸入方塊即可。
  

提示!!
Htmlspecialchars()函數為HTML編碼敘述,如果在資料欄位中含有Html標籤敘述,則這個標籤敘述將不會被瀏覽器解譯出來,而當成是一般的文字顯示出來(如果題目本身就有HTML標籤為其題目內容),這只是一個預防措施。
作者: 小誌    時間: 2011-4-24 14:38

in.php
  1. <?
  2. //連結MySQL Server
  3.     $conn = mysql_connect("localhost", "root", "12345a");
  4. //選擇資料庫
  5.     mysql_select_db("QUESTION", $conn);
  6. //指定提取資料的校對字元表
  7.     mysql_query("set character set big5");   
  8. //建立查詢字串
  9. $SQL="Select * From question Order By 題號";
  10. //將回傳結果存放於變數中
  11. $datalist=mysql_query($SQL);
  12. ?>

  13. <HTML>
  14. <head><title>EMAIL問卷</title>
  15. <meta http-equiv="Content-Type" content="text/html; charset=big5">
  16. </head>
  17. <BODY>
  18. <H2 align="center"><font size="2">
  19. <img border="0"src="asktitle.gif"></font></h2>
  20. <FORM Action=sentmsg.php Method=post>
  21. <fontsize="2">
  22. 姓名
  23. <INPUT Type=Text Name=Name size="20">
  24. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;E-Mail
  25. <INPUT Type=Text Name=Email size="20">
  26. </font>
  27. <HR size="1" color="#0000FF">
  28. <font size="2">
  29. <?
  30. while (($fielddatas=mysql_fetch_array($datalist)))
  31. {
  32. ?>
  33. <B><?=$fielddatas["題號"];?>.<?=htmlspecialchars($fielddatas["題目"]);?>
  34. </B><BR>
  35. <?
  36. if ($fielddatas["題型"]=="選擇")
  37. {
  38. for ($I=1;$I<=3;$I++)
  39. {
  40. ?>
  41. <INPUT Type=Radio Name=No<?=$fielddatas["題號"];?>
  42. Value=<?=$fielddatas["選項" . $I] ;?>>
  43. <?=htmlspecialchars($fielddatas["選項" . $I]);?><BR>
  44. <?
  45. }
  46. }
  47. else
  48. {
  49. ?>
  50. <INPUT Type=Text Name=No<?=$fielddatas["題號"];?> size="20"><BR>
  51. <?
  52. }
  53. }
  54. ?>
  55. <INPUT Type=Submit Value="送出問卷">
  56. </font></FORM><BODY></HTML>
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)