基本的多个答案测验系统复选框模糊

时间:2016-04-16 04:28:43

标签: php mysql checkbox

我正在尝试构建一个基本的测验系统,一切似乎都没问题。

以下代码显示用户如何选择正确答案,getresult.php显示结果。在我的数据库中,有一个问题,opt1,opt2,opt3 opt4和答案列。

<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;

}

现在问题带有复选框,我可以查看所有问题的所有值。当我使用单选按钮时,我只能检查所有问题中的一个值。如何从一个问题中仅检查一个值。

2 个答案:

答案 0 :(得分:1)

我不知道为什么你不使用单选按钮,如果你打算只允许一个选择,但是你可以设置一个限制,使用带有一些JavaScript(或jQuery)的复选框具有相同的功能。

以下是一个示例: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) { //... }
       */

   }

});

答案 1 :(得分:0)

如果问题只包含一个答案,最好使用单选按钮选择选项

或 其他

使用此jquery从复选框

中选择单个值
$('input[type="checkbox"]').on('change', function() {
   $('input[type="checkbox"]').not(this).prop('checked', false);
});