2012-02-15 56 views
0

讀取$ _POST陣列確定這是我的腳本: -如何在PHP

<form action="results.php" method="post"> 
      <?php mysql_select_db($database, $databasename) or die("Opps some things went wrong"); 
      $sqlQueryTestDisplay = mysql_query("SELECT * FROM questions WHERE test_id='$testtaken_id' ORDER BY question_id ASC"); 
      $i = 0; 
      while($DisplayItems = mysql_fetch_array($sqlQueryTestDisplay)) 
      { 
       $i = $i + 1; 
       $question_id = $DisplayItems['question_id']; 
       $question = $DisplayItems['question']; 
       $opta = $DisplayItems['opta']; 
       $optb = $DisplayItems['optb']; 
       $optc = $DisplayItems['optc']; 
       $optd = $DisplayItems['optd']; 
       $answer[$i] = $DisplayItems['answer']; 
       $thisAnswer = $answer[$i]; 
       echo '<li>'.$question.'</li>'; 
       echo '<p>'; 
       echo '<label><input type="radio" name="optans'.$i.'" value="radio" id="RadioGroup'.$i.'_0" />'.$opta.'</label>'; 
       echo '<label><input type="radio" name="optans'.$i.'" value="radio" id="RadioGroup'.$i.'_1" />'.$optb.'</label>'; 
       echo '<label><input type="radio" name="optans'.$i.'" value="radio" id="RadioGroup'.$i.'_2" />'.$optc.'</label>'; 
       echo '<label><input type="radio" name="optans'.$i.'" value="radio" id="RadioGroup'.$i.'_3" />'.$optd.'</label>'; 
       echo '<input name="ans'.$i.'" type="hidden" value="'.$thisAnswer.'" />'; 
       echo '</p>'; 
      } 
      echo '<input name="total_questions" type="hidden" value="'.$i.'" />'; 
      echo '<input name="test_id" type="hidden" value="'.$TestID.'" />'; 
      ?> 
      <input name="submittest" type="submit" /> 
      </form> 

正如你可以看到我使用數組存儲在不同的字段中的值。現在,我即頁面result.php上的下一個頁面上我寫這: -

<?php 
if(isset($_POST['submittest'])) 
{ 
global $ans1; 
$TotalQuestions = $_POST['total_questions']; 
$TestID = $_POST['test_id']; 
$TestResult = 0; 
for ($i=1; $i<=$TotalQuestions; $i++) 
{ 
    $ansValue = 'ans'.$i; 
    $optansValue = 'optans'.$i; 
    $ans = $_POST[$ansValue]; 
    $optans = $_POST[$optansValue]; 
    if ($ans == $optans) 
    { 
     $TestResult = $TestResult + 1; 
    } 
} 
$st_id = $row_Recordset1['id']; 
mysql_select_db($database, $databasename) or die("Opps some things went wrong"); 
$sqlQueryInsertResult = mysql_query("INSERT INTO results (student_id, test_id, test_result) VALUES ('$st_id', '$TestID', '$TestResult')"); 
header('location:results.php'); 
} 
?> 

現在我的腳本不讀書ANS1,ANS2 .....等等,甚至quesans1,quesans2 ... ..等等。

我認爲問題出在我打電話使用$ _ POST方法數組的方式。

是語法正確的,我怎麼能解決這個問題...請幫助:|

+0

無關的問題,但...你包括* *回答您的問題在HTML?如果是這樣,用戶將能夠通過查看頁面的源代碼來查看所有答案! – bfavaretto 2012-02-15 14:25:06

+1

將name =「submittest」添加到

標記? – CBusBus 2012-02-15 14:29:21

回答

1

您的單選按鈕後,所有的考試答案正在返回「無線」作爲自己的價值。讓他們返回答案,你應該確定 更改電臺的定義來:

'<INPUT type="radio" name="optans'.$i.'" value="'.$opta.'" >'.$opta.'</INPUT>' 
'<INPUT type="radio" name="optans'.$i.'" value="'.$optb.'" >'.$optb.'</INPUT>' 
'<INPUT type="radio" name="optans'.$i.'" value="'.$optc.'" >'.$optc.'</INPUT>' 
'<INPUT type="radio" name="optans'.$i.'" value="'.$optd.'" >'.$optd.'</INPUT>' 

可能是值得不把答案到頁面上作爲隱藏字段 - 做一個測驗很容易。做另一個SQL查詢來檢查答案時,他們回來

多用一些循環顯示單選按鈕,您可以縮短你的代碼位。

1

0Change測試選項,以這樣的:

  echo '<label><input type="radio" name="optans'.$i.'[]" value="1" id="RadioGroup'.$i.'_0" />'.$opta.'</label>'; 
      echo '<label><input type="radio" name="optans'.$i.'[]" value="2" id="RadioGroup'.$i.'_1" />'.$optb.'</label>'; 
      echo '<label><input type="radio" name="optans'.$i.'[]" value="3" id="RadioGroup'.$i.'_2" />'.$optc.'</label>'; 
      echo '<label><input type="radio" name="optans'.$i.'[]" value="4" id="RadioGroup'.$i.'_3" />'.$optd.'</label>'; 

和處理器這樣的:

<?php 
if(isset($_POST['submittest'])) 
{ 
global $ans1; 
$TotalQuestions = $_POST['total_questions']; 
$TestID = $_POST['test_id']; 
$TestResult = 0; 
for ($i=1; $i<=$TotalQuestions; $i++) 
{ 
    $ans = $_POST['ans'.$i]; 
    $optans = $_POST['optans'.$i]; 

    for ($j=0;$j<count($optans);$j++) { 
     if ($optans[$j]==$ans) { 
      $TestResult = $TestResult + 1;    
     } 
    } 
} 

這是比較測試的答案非常不安全的方式。有人可以輕鬆查看源代碼並查看正確的答案。您應該驗證$_POST