2013-01-03 89 views
0

我在下面在此它顯示每個問題的正確答案在考試查詢:如何使用顯示不正確的答案HTML/PHP/mysqli的

<? 

     $query = "SELECT q.SessionId, q.QuestionId an.Answer 
     FROM Session s 
     INNER JOIN Question q ON s.SessionId = q.SessionId 
     JOIN Answer an ON q.QuestionId = an.QuestionId 
     AND an.SessionId = q.SessionId 
     WHERE s.SessionName = "XULWQ" 
     ORDER BY q.QuestionId, an.Answer 
     "; 

     // prepare query 
     $stmt=$mysqli->prepare($query); 
     // You only need to call bind_param once 
     $stmt->bind_param("s", $assessment); 
     // execute query 
     $stmt->execute(); 


      // This will hold the search results 
     $searchQuestionId = array(); 
     $searchAnswer = array(); 

     // Fetch the results into an array 

     // get result and assign variables (prefix with db) 
     $stmt->bind_result($dbSessionId, $dbQuestionId, $dbAnswer); 
      while ($stmt->fetch()) { 

      $searchQuestionId[] = $dbQuestionId; 
      $searchAnswer[] = $dbAnswer; 

      } 

    ?> 

下面是結果是從查詢輸出:

SessionId QuestionId Answer 
137  1   B 
137  1   D 
137  1   F 
137  2   A 
137  2   C 

現在我已存儲的上述數據中低於使用PHP/HTML表的代碼:

<table border='1' id='markstbl'> 
<thead> 
<tr> 
<th class='questionth'>Question No.</th> 
<th class='answerth'>Answer</th> 
</tr> 
</thead> 
<tbody> 
<?php 
$row_span = array_count_values($searchQuestionId); 
$prev_ques = ''; 
foreach($searchQuestionId as $key=>$questionId){ 

?> 

<tr class="questiontd"> 
    <?php 
    if($questionId != $prev_ques){ 
    ?> 
    <td class="questionnumtd q<?php echo$questionId?>_qnum" name="numQuestion" rowspan="<?php echo$row_span[$questionId]?>"> 
    <?php echo$questionId?> 
    </td> 
    <?php 
    } 
    ?> 
<td class="answertd" name="answers[]"><?php echo$searchAnswer[$key]?><input type='hidden' id='hidanswerid' name='answersId[]' value='<?php echo$searchAnswerId[$key]?>'></td> 
</tr> 
<?php 
$prev_ques = $questionId; 
} 
?> 
</tbody> 
</table> 

輸出在HTML/PHP表:

enter image description here

所以你可以看到我輸出它包含在考試每題的正確答案的表。大。但現在我想創建另一個頁面 這是類似的,但這次除了顯示每個問題的正確答案,我希望它顯示每個問題的不正確答案。

我不知道是什麼做的最好的方式,但我的計劃,我相信是先檢索每個問題option_type(選項類型的期權數量來選擇一個答案):

查詢:

$query="SELECT q.SessionId, q.QuestionId, o.OptionId 
    FROM SESSION s 
    INNER JOIN Question q ON s.SessionId = q.SessionId 
    JOIN Option_Table o ON q.OptionId = o.OptionId 
    WHERE s.SessionName = "XULWQ" 
    ORDER BY q.QuestionId"; 

結果:

SessionId QuestionId OptionId 
137   1    5 
137   2    2 

然後使用一個case語句在PHP中顯示的字母爲每個個案(需要幫助編碼這):

case 1, OptionId = 1, letters = A B C 
case 2, OptionId = 2, letters = A B C D 
case 3, OptionId = 3, letters = A B C D E 

... //continue going down 

case 26, OptionId = 26, letters = A B C D E ... Z 
case 27, OptionId = 27, letters = True False (Options True or False) 
case 28, OptionId = 28, letters = Yes or No (Options Yes or No) 

然後一些如何刪除字母的正確答案(也許使用查詢,但我不知道),所以HTML/PHP的表包含了所有不正確的答案,而不是正確的答案在表

所以我的問題是如何編碼,以顯示不正確的答案,而不是正確的答案在HTML/PHP表?

的HTML/PHP的表從上面的例子中的輸出應該是這樣的:

enter image description here

註釋:您可以在各個問題之間交換的答案,同時打印。

+0

使用和array_diff得到不正確的答案。 $ leters = A,B,C,d; $ correct_ans = B,d; $ incorrect_ans =和array_diff($字母,$ correct_ans); – Kirtan

+0

@Kirtan如果您可以爲我提供一個答案,顯示代碼頁的位置和內容,我會很高興並標記您的答案 – user1941871

回答

1

存放在數組

$option[1]= array(A,B,C); 
$option[2]= array(A,B,C,D); 
$option[3]= array(A,B,C,D,E); 
. 
. 
. 
. 
$option[27]= array(True,False); 

的選項從數據庫中檢索一樣ü沒有的option_type。

查詢:

$query="SELECT q.SessionId, q.QuestionId, o.OptionId 
FROM SESSION s 
INNER JOIN Question q ON s.SessionId = q.SessionId 
JOIN Option_Table o ON q.OptionId = o.OptionId 
WHERE s.SessionName = "XULWQ" 
ORDER BY q.QuestionId"; 

結果:

SessionId QuestionId OptionId 
137   1    5 
137   2    2 

的foreach QuestionId

$incorrect_ans[QuestionId]=array_diff($option[OptionId],$correct_ans[QuestionId]); 
+0

並將其存儲在html表中只需簡單地說:'<?php echo $ incorrect_ans [QuestionId] [$ key]?>' – user1941871

+0

yes。 foreach問題ID有一個不正確的答案數組。 – Kirtan

+0

謝謝,我會繼續它:) – user1941871