Bir soru için çok sayıda cevabı olan bir sınav hazırlıyorum. Onay kutuları bir dizi kullanılarak saklanır ve answers_bank
tablomda ab_name
sütununa göre kontrol edilir (doğru cevaplar depolanır).Checkbox Quiz Çoktan Seçmeli
Tek yapmam gereken - kontrol edilen cevaplar answer_bank tablosunda ise echo'nun "doğru" olması durumunda, yanlış kontrol edilen kutular için yankı "yanlış" olur.
Yapmaya çalıştığım yol, her yineleme sırasında dizideki her bir yanıtı karşılaştırdığı ve diğer yanıtlar için yanlış döndüğü (eşit olmadığı için) çalışmaz. Görüntünün ilk bölümünde gösterildiği gibi
onay kutusu soruları İade: Ben kurulum var
kod snippet'idir: Bu resim ben yaşıyorum sorunu açıklamalıdır cevaplar
doğru olmadığını
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
}
?>
kontrol Hedefliyor Bu yapabilirsiniz 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>";
}
}
}
}
}
Başka çözeltiler veya düzeltmeler? Çok teşekkürler!
Bazı kodları kaçırdığımıza dair bir fikrim var, açıkçası cevabı kontrol eden kodlara bir kereden fazla denir. – Epodax
@Epodax Daha fazla kod ekledim, her yanıtın db'ye karşı nasıl olduğunu kontrol etmek için db – StackMeUp123
Çok fazla döngü kullanıyorsunuz, Döngülerden birini çıkarmanız veya birbirinizin içine girmemesi gerekiyor. Bunun nedeni, veritabanı sonucunu ilk kez döngülemenizdir ve her bir döngü doğru bir yanıttır, sonra POST verileriyle döngü yapmaya devam edersiniz ve "Siz" dediniz. – Epodax