2016-04-16 5 views
-1

Ich versuche, ein grundlegendes Quizsystem aufzubauen, und alles scheint ok.grundlegende mehrfache Antworten Quizsystem Checkbox Ambiguität

Der folgende Code zeigt, wie ein Benutzer die richtige Antwort wählt und das getresult.php zeigt das Ergebnis. In meiner Datenbank gibt es eine Frage, opt1, opt2, opt3 opt4 und antwortspalte.

<form method="POST" action="getresult.php"> 
    <label>Enter Your Name:</label><br> 
    <input type="text" name="name" required><br><br> 
<?php 
    $db = new mysqli("localhost", "root", "","learndb"); 
    $stmt=$db->prepare("SELECT * FROM quiz"); 
    $stmt->execute(); 
    $result=$stmt->get_result(); 

     while($myrow = $result->fetch_assoc()) 
    { 
     echo "<form method='POST' action='getresult.php'>"; 
    echo $myrow['id']; 
    echo "."; 
    echo $myrow['question']; 
    echo "<br>"; 
    echo "<input type='checkbox' name='mycheck[]' value=".$myrow['opt1'].">"; 
     echo $myrow['opt1']; 
    echo "<br>"; 
    echo "<input type='checkbox' name='mycheck[]' value=".$myrow['opt2'].">"; 
    echo $myrow['opt2']; 
     echo "<br>"; 
    echo "<input type='checkbox' name='mycheck[]' value=".$myrow['opt3'].">"; 
    echo $myrow['opt3']; 
     echo "<br>"; 
    echo "<input type='checkbox' name='mycheck[]' value=".$myrow['opt4'].">"; 
    echo $myrow['opt4']; 
     echo "<br><br>"; 

    } 
?> 
<input type="submit" name="submit" value="Get Results" class="btn btn-primary"> 

getresult.php

<?php 
extract($_POST); 
$db = new mysqli("localhost", "root", "","learndb"); 
$stmt=$db->prepare("SELECT * FROM quiz"); 
$stmt->execute(); 
$result=$stmt->get_result(); 
$myrow = $result->fetch_assoc(); 

$totalCheckboxChecked = sizeof($_POST['mycheck']); 

$submit=isset($_POST['submit']); 

$count=0; 

if($submit) 
{ 
    for($i=0;$i<$totalCheckboxChecked;$i++) 
    { 

       if($mycheck[$i]==$myrow['answer']) 
     { 
      $count=$count+1; 
     } 

    } 
    echo "Hello "; 
    echo $_POST['name']; 
    echo "<br>"; 
    echo "You scored "; 
    echo $count; 

} 

Nun ist die Problem mit der Checkbox, ich alle Werte von allen Fragen überprüfen. Und wenn ich Radiobutton verwende, kann ich nur einen Wert von allen Fragen überprüfen. Wie kann ich nur einen Wert von einer Frage überprüfen?

+0

soll es mehr zulässigen Antworten auf den Kontrollkästchen sein? Wenn nicht, dann benutzen Sie Radio-Buttons, die nur A oder B oder C oder D erlauben ... was die Checkboxen tun werden, um A und B zu sagen, sind akzeptable Antworten. gut, aber wenn nur eine Antwort pro Frage erwartet wird - Radio-Buttons sind besser – gavgrif

+0

wenn die Antwort nur einen Wert enthalten, dann Radio-Button ist die bessere Option, wenn Ihre Antwort zwei Werte enthalten dann Kontrollkästchen mit mehreren wählen –

+0

@arun kumaresh das Problem mit dem Radio-Button ist es mir erlaubt, nur eine Option aus einer ganzen Reihe von Quolestionen wegen dieser While-Schleife zu wählen. – micky

Antwort

0

wenn die Frage enthalten nur eine Antwort bessere Nutzung Radiotasten, um die Option

oder sonst

Verwendung dieses jquery auszuwählen einzelnen Wert aus Checkbox

$('input[type="checkbox"]').on('change', function() { 
    $('input[type="checkbox"]').not(this).prop('checked', false); 
}); 
+2

Was ist der Wert von Kontrollkästchen, wenn die nicht ausgewählten deaktiviert sind. Wenn das der gewünschte Effekt ist, dann wären die Radio-Buttons besser, und wenn mehrere Optionen ausgewählt werden sollen, sind die Checkboxen passend, müssen aber mehrere Selektionen erlauben. Aber um die nicht ausgewählten Kontrollkästchen einfach zu deaktivieren, werden sie Pseudo-Radio-Buttons und dann überhaupt keine Chckboxen. oder fehle ich etwas? – gavgrif

+0

Ja Radiobutton ist eine bessere Option, aber er verwendet Checkboxen –

+0

- dann sollte die Antwort sein, die Verwendung von Kontrollkästchen zu stoppen und Radiobuttons zu verwenden - es sei denn, die Fragen unterstützen mehrere richtige Antworten – gavgrif

1

ich wählen nicht Sie wissen, warum Sie keine Optionsfelder verwenden, wenn Sie nur eine Auswahl zulassen möchten. Sie können jedoch ein Limit festlegen, um das gleiche mit Checkboxen mit JavaScript (oder jQuery) zu erreichen. Hier

ein Beispiel: see fiddle demo

var limit = 1; 

$('input').on('change', function(event) { // this could've been a 'click' event too. 

    if($(this).siblings(':checked').length >= limit) { 
     this.checked = false; 

     /* OR you can do like: 
      if($("input[name='mycheck']:checked").length > limit) { //... } 
     */ 

    } 

}); 
+0

Ich verwende keine Optionsfelder, weil es nur zu wählen erlaubt eine Option aus einer ganzen Reihe von Fragen wegen dieser While-Schleife. – micky

+0

Etwas ist nicht wirklich klar ... Möchten Sie, dass Benutzer nur einen einzigen in der Gruppe auswählen, unabhängig davon, wie sie angezeigt wird (Radio oder Kontrollkästchen)? Wenn Ihre Antwort Ja lautet, müssen Sie die Kontrollkästchen für einen Radio-Button nicht automatisch wiederherstellen. Wenn Sie es immer noch mit den Antworten tun möchten, können Sie das erreichen, aber ich denke, dass Ihr Problem woanders ist. – Ekin

+0

Ich fand mein Problem mit der Schleife, die nur eine bestimmte Antwort aus allen Fragen auswählen kann. das ist Radiobutton verwenden. – micky