TEL:400-8793-956
当前位置:程序、服务器

如何从多项选择题中选择正确答案?

提问者: 近期获赞: 浏览人数: 发布时间:2021-01-03 15:36:22

 问:如何使用php和mysql从多项选择题中选择正确答案,

我不知道自己是否做对了,因为我在编程世界
 
1-还是 陌生的,我正在使用数组来存储问题 
2-答案的另一个数组 
3-将问题ID和答案ID传递到处理页面,然后将它们与数据库中的值进行比较以检查正确答案, 
 
我的问题是当我将ID传递到我的处理页面时,我只有一个ID一个问题,即使我选择了不同的问题,它仍然在重复相同的问题ID 
 
 
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title> </title>
        <link rel="stylesheet" type="text/css" href="style.css" />
    </head>
    <body>
        <div id="header">
        
        <div class="container">
        
        <div id="logoArea"></div>
         <form action="process.php" method="post" >
             
<?php 
require ("mysql_connect.php");
$test_id = $_GET['test_id'];
$qid = array();
$sql ="Select * from question where test_id='$test_id'";
$res = mysqli_query($connection, $sql);
$noq = mysqli_num_rows($res);
while ($row = mysqli_fetch_assoc($res) ) {
$question_id = $row['question_id'];
$qid [] = $question_id;
$questions = array ($row['question_text']) ;
     foreach ($questions as $question) {
         echo "<hr />";
    echo"<label><p>$question</p></label>"  ;
     }
          
  /*
  * Get choices
  */
        
  $sql1 = mysqli_query($connection,"SELECT * FROM `answers` WHERE answers.question_id =  '". $question_id."' ") or die (mysqli_error($connection));
  while ($row1 = mysqli_fetch_assoc($sql1)) {
         $answer_id =$row1 ['answer_id'];
       $answers =array ($row1['answer_text']);
    
     foreach ($answers as $answer) {
         
     
         
    ?>
    <label><p><input type='radio' name='answers'   value= '<?php echo $row1 ['answer_id']; ?>' id='answers' /> <?php echo  $answer ; ?> </p></label>
    <?php
  
}
  }
 
  
}
 var_dump($qid );
?>
             <input type="submit" name="submit" value=" "/>
             <input type="hidden" name="question_id" value="<?php  echo $question_id  ;    ?>" />
         </form>
         <div id="navmenu"></div>
        
        </div>
        
        </div>
    </body>
</html>
<?php
include ("mysql_connect.php");
if(isset($_POST["submit"])){
$correct_answers = 0;
$wrong_answers = 0;
$total = 0 ;
$question_id = $_POST['question_id'];
$selected_choice = $_POST['answers'];
$sql = mysqli_query($connection, "SELECT * FROM `answers` WHERE  answers.question_id = '".$question_id ."' AND answers.correct = 1  ")or die(mysqli_error($connection));
while ($result = mysqli_fetch_assoc($sql)){
   $correct_choices = array($result['answer_id']);
    
}
foreach( $correct_choices as  $correct_choice){
       $total  ++ ;
    if($correct_choice == $selected_choice){
        $correct_answers ++ ;
    }else{
        $wrong_answers ++;
    }
  $score = $correct_answers / $total ;
  $score = number_format($score * 100);
  echo "your score is $score <br  />";
}
 var_dump($correct_choice); 
  var_dump($_POST); 
       if ($correct_answers > 0){ 
           echo "<h2><span>You have  $correct_answers  correct answers</span></h2>";
       }
        if ($wrong_answers > 0) { 
           echo "<h2><span>You have  $wrong_answers  wrong answers</span></h2>" ;
          
        }
  }
?>
我的数据库 
 
 
 
CREATE TABLE `answers` (
  `answer_id` int(11) UNSIGNED NOT NULL,
  `answer_text` text NOT NULL,
  `question_id` int(11) NOT NULL,
  `correct` tinyint(1) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `question` (
  `question_id` int(11) UNSIGNED NOT NULL,
  `question_text` text NOT NULL,
  `test_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 
答:我已经检查了您的代码,获得相同问题ID的问题背后的原因是第70行中用于存储问题ID的隐藏字段(名称:question_id)。在您的代码中,隐藏字段仅存储最后一个问题ID,这是因为它不在while循环中(用于问题)。
 
需要更改的另一件事是单选按钮的名称,每个问题的所有选项都相同。因此,您可以仅用一个问题检查答案。要检查多个问题的答案,您必须为每个问题定义与单选按钮组不同的ID(例如:name ='answers1')。您可以将收音机名称与问题ID分组。
 
我已经编辑了上面的代码并进行了一些更改。您可以检查附件中的代码。
上一篇: 从php网站在Odoo中创建数据库
下一篇: 防止倒数计时器重启