Board logo

標題: 13-3-7 進階研究 [打印本頁]

作者: 小誌    時間: 2011-4-24 15:34     標題: 13-3-7 進階研究

13-3-7   進階研究
如果要讓受測者(學生)只能參加ㄧ次考試,那我們該如何處理?首先,把評分及公佈成績的『grad.php』網頁中的「[再考ㄧ次]」連結取消,這樣平分後就無法連結再考試:
grad.htm
  1. …略
  2. <!--將成積不及格的分數以紅色顯示-->
  3. <?
  4.   IF ($Score<50)
  5.   echo "<font color=red>" . $Score . "分,死當</font>";
  6.   ELSEIF ($Score<60)
  7.   echo "<font color=red>" . $Score . "分,補考</font>";
  8.   ELSE
  9.   echo $Score . "分,及格";
  10. ?>
  11. </td></tr>
  12. </table>
  13. <hr size="1">
  14. <p>
  15. <!-- 重新填寫測驗卷 -->
  16. </p>
  17. </BODY>
  18. </HTML>
複製代碼
再來,受測學生名單的姓名與學號務應未先行建立於資料庫的「Student」資料表,該資料表中的『first』欄位是用來紀錄『評分及公佈成績』的網頁中PHP程式所進行的分數計算結果,預設值為-1,也就是說學生成績若為「-1」分,則代表該學生尚未參加考試,若『first』欄位值為「0」或其他分數,就表示該學生已經參加過考試,因此,身分驗證檢查的試場大門網頁『indoor.php』我們就可改寫如下:
  1. <?
  2. '…略
  3.   
  4. //進行資料查詢
  5. $RS=mysql_query($SQL);

  6. //如果姓名學號驗證無誤
  7. if ($Result=mysql_fetch_array($RS))
  8. {
  9.      If ($Result["分數"]==-1)
  10.       {
  11.        header("Location: question.php?" . $_SERVER["QUERY_STRING"]);
  12.       }
  13.      else
  14.      {
  15.      //已經考過試
  16.      $Msg="你已經考過試了!不能再考!!";
  17.      }
  18. }
  19. else
  20. {   
  21. //如果找不到對應的學號與姓名就顯示錯誤訊息
  22.    IF ($Msg=="")
  23.    $Msg="姓名或學號輸入有錯誤!";
  24. }
  25. EndIf;
  26. ?>
複製代碼
[attach]5841[/attach]
圖13-25 已考過試不能再考。
作者: 小誌    時間: 2011-4-24 15:35

Indoora.php
  1. <?
  2. //承接由Indoor表單傳來的學號、姓名資料
  3. @$studentname=$_REQUEST["studentname"];
  4. @$number=$_REQUEST["number"];
  5. $Msg="";
  6. //如果Indoor表單傳來的學號、姓名資料不是空白的
  7. //就進行與資料庫中受測學生資料進行比對
  8. IF (($studentname!="") && ($number!="")):
  9. //連結MySQL Server
  10.     $conn = mysql_connect("localhost", "root", "12345a");
  11. //選擇資料庫
  12.     mysql_select_db("exam", $conn);
  13. //指定提取資料的校對字元表
  14.     mysql_query("set character set big5");
  15. //提取資料的SQL命令字串
  16.    $SQL="SELECT * From student where 學號='" .$number . "' and 姓名='" .$studentname . "'";
  17. //進行資料查詢
  18. $RS=mysql_query($SQL);

  19. //如果姓名學號驗證無誤
  20. if ($Result=mysql_fetch_array($RS))
  21. {
  22.      If ($Result["分數"]==-1)
  23.       {
  24.        header("Location: question.php?" . $_SERVER["QUERY_STRING"]);
  25.       }
  26.      else
  27.      {
  28.      //已經考過試
  29.      $Msg="你已經考過試了!不能再考!!";
  30.      }
  31. }
  32. else
  33. {   
  34. //如果找不到對應的學號與姓名就顯示錯誤訊息
  35.    IF ($Msg=="")
  36.    $Msg="姓名或學號輸入有錯誤!";
  37. }
  38. EndIf;
  39. ?>

  40. <html>
  41. <head>
  42. <meta http-equiv="Content-Type" content="text/html; charset=big5">
  43. <title>線上考試-試場大門</title>
  44. <script language="vbscript">
  45. <!--
  46. <!-- 檢查有沒有輸入資料 -->
  47. Function datacheck
  48. <!--利用VB 檢驗字串長度的Len函數驗證欄位資料是否填寫-->
  49. IF Len(document.indoor.studentname.value)=0 or Len(document.indoor.number.value)=0 then
  50. <!--如果有欄位沒有填寫則秀出警告視窗-->
  51. msg="請輸入資料!"
  52. MsgBox msg,vbExclamation,"錯誤!"
  53. Exit Function
  54. End IF
  55. <!--如果欄位資料都有填寫則觸發身分驗證的PHP程式-->
  56. indoor.Submit
  57. End Function
  58. -->
  59. </script>
  60. </head>
  61. <body>
  62. <!-- 輸入資料的表單 -->
  63. <p align="center"><font color="#FF0000" size="6" face="新細明體">線上考試-試場大門</font></p>
  64. <!--受測學生所填的資料不正確將會出現一段錯誤訊息-->
  65. <center><font color="red"><?=$Msg;?></font></center>
  66. <form method="get" name="indoor" >
  67.   <div align="center">
  68.     <table border="0" width="60%">
  69.       <tr>
  70.         <td width="50%">
  71.           <p align="right"><font color="#0000FF">姓名:</font></td>
  72.         <center>
  73.         <td width="50%"><input type="text" name="studentname" size="10" value="<?=$studentname;?>"></td>
  74.         </tr>
  75.       <tr>
  76.         <td width="50%">
  77.           <p align="right"><font color="#0000FF">學號:</font></td>
  78.         <td width="50%"><input type="number" name="number" size="10" value="<?=$number;?>"></td>
  79.         </tr>
  80.         <tr>
  81.           <td width="100%" colspan="2">
  82.             <p align="center"><input type="button" value="進入考場" onclick="datacheck">
  83.             <input type="reset" value="重新輸入"></td>
  84.         </tr>
  85.       </table>
  86.     </center>
  87.   </div>
  88. </form>
  89. </body>
  90. </html>
複製代碼





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