簡體   English   中英

復選框測驗多項選擇

[英]Checkbox Quiz Multiple Choice

我正在准備一個測驗,對於一個問題可以有很多答案。 復選框使用數組存儲,並使用ab_name列對照我的answers_bank表進行檢查(存儲正確答案的位置)。

我只想做的是-如果已檢查的答案在Answers_bank表中,則回顯為“正確”,否則為不正確的復選框為回顯“不正確”。

我嘗試執行此操作的方法無效,因為它在每次迭代過程中比較數組中的每個答案,並為其他答案返回錯誤(因為它不相等)。 此圖像應解釋我遇到的問題:

在此處輸入圖片說明

這是我已設置的代碼的片段:

返回復選框問題,如圖像的第一部分所示:

foreach ($qresults as $aresults) {
    $selected = $aresults["ab_name"];
    $ab_id = $aresults["ab_id"];
    ?>

    <input type="checkbox" name="checkbox[]"
           value="<?php echo $aresults["ab_name"]; ?>"> <?php echo $aresults["ab_name"]; ?> <br>

    <?php
}
?>

旨在檢查答案是否正確

foreach ($results as $row) {

$qb_id = $row['qb_id'];
$q_answer = $_POST["q$qb_id"];

$sql = "SELECT * FROM answers_bank WHERE ab_qb_id = :qb_id AND ab_correct = :correct";
$stmt = $db->prepare($sql);
$stmt->bindValue(':qb_id', $qb_id);
$stmt->bindValue(':correct', "correct");
$stmt->execute();
$qresults = $stmt->fetchAll();
foreach ($qresults as $cresults) {
    if (is_array($q_answer)) {
        foreach ($q_answer as $checkbox) {

            if ($checkbox == $cresults["ab_name"]) {
                echo "You said : " . $checkbox . " ... which is the correct answer!</br>";

            } else if ($checkbox != $cresults["ab_name"]) {
                echo "You said : " . $checkbox . " ... which is incorrect</br>";
            }

        }
    }
}

}

我可以對此進行任何其他解決方案或更正嗎? 非常感謝!

首先存儲所有正確的答案,因此您不必遍歷所有答案和表單中的響應。 相反,您可以僅遍歷表單響應並檢查所選值是否在正確響應的數組中。

foreach ($results as $row) {

$qb_id = $row['qb_id'];
$q_answer = $_POST["q$qb_id"];

$sql = "SELECT * FROM answers_bank WHERE ab_qb_id = :qb_id AND ab_correct = :correct";
$stmt = $db->prepare($sql);
$stmt->bindValue(':qb_id', $qb_id);
$stmt->bindValue(':correct', "correct");
$stmt->execute();
$qresults = $stmt->fetchAll();

$correct_answers = array(); 
foreach ($qresults as $cresults) { 
    array_push($correct_answers, $cresults["ab_name"]);
} 

if (is_array($q_answer)) {
    foreach ($q_answer as $checkbox) {
        if (in_array($checkbox, $correct_answers)) {
            echo "You said : " . $checkbox . " ... which is the correct answer!</br>";
        } else {
            echo "You said : " . $checkbox . " ... which is incorrect</br>";
        }

    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM