0

我想显示数据库中的问题以进行在线能力测试。我生成代码以随机显示 10 个问题。

但主要问题是问题在重复。我不想在试卷中重复提问。

这是随机显示问题的代码:-

<html>
<body>
<form action="./eval.php" method="post">
<?php

$connect = mysql_connect("localhost" ,"root","");

mysql_select_db("aptitude");



 for ( $i = 1; $i < 11; ++$i )
{

$query = mysql_query("SELECT * FROM `main`  ORDER BY RAND() LIMIT 1 ");




 while($rows = mysql_fetch_array($query)):

    $q = $rows['Q_no'];
    $qus = $rows['Question'];
    $a = $rows['answer1'];
    $b = $rows['answer2'];
    $c = $rows['answer3'];
    $d = $rows['answer4'];
    $ans = $rows['correct'];

     echo "Q$i:-$qus <br>";
    echo "A <input type=radio name = 'answer[$q]' value = '$a'></input>$a &nbsp &nbsp"; 
    echo "B <input type=radio name = 'answer[$q]' value = '$b'></input>$b &nbsp &nbsp"; 
    echo "C <input type=radio name = 'answer[$q]' value = '$c'></input>$c &nbsp &nbsp "; 
    echo "D <input type=radio name = 'answer[$q]' value = '$d'></input>$d <br><br> ";


    endwhile;

 }


?>

<center><input name="cmdSubmit" type="submit" id="cmdSubmit" value="Submit"/>
</center>
</form>
</body>
</html>
4

2 回答 2

2
$q = $rows['Q_no'];
$qus = $rows['Que'];
$a = $rows['A'];
$b = $rows['B'];
$c = $rows['C'];
$d = $rows['D'];
$ans=$row['ans'];

就看上面的东西:-
你已经输入
了 $ans=$row['ans'];
它应该是$ans=$rows['ans'];
$qus

于 2013-08-08T16:15:39.567 回答
0

根据您帖子中的一些假设,对此进行尝试。请注意,这是未经测试的,可能有错误,效率不高,可能不安全等......

看来您在页面上放了 30 个随机问题,并希望测试每个问题的答案(您的表格和您的问题似乎没有 100% 匹配,所以按代码进行)。

在内部循环中使您的表单看起来像这样

    echo "Q:-$qus <br>";
    echo "A <input type=radio name = 'answer[$q]' value = '$a'></input>$a &nbsp &nbsp"; 
    echo "B <input type=radio name = 'answer[$q]' value = '$b'></input>$b &nbsp &nbsp"; 
    echo "C <input type=radio name = 'answer[$q]' value = '$c'></input>$c &nbsp &nbsp "; 
    echo "D <input type=radio name = 'answer[$q]' value = '$d'></input>$d <br><br> ";

然后在您的表单处理代码中,您可以执行此操作。

    $answers = $_POST['answer'];
    foreach($answers as $question => $answer){
         $query = mysql_query("SELECT ans FROM `main` where Q_no = $question");
         $result  = mysql_fetch_array($query);
         if ($result['ans']==$answer){
              echo "Question $question was correct <br>";
         }else{
              echo "Question $question was incorrect <br>";
         }
    }

应该做的是创建一个答案数组,在数据库中查找每个答案,看看它们是否正确(假设 == 可以比较 2)。正如我所说,效率不高。或优雅,但应该让您知道如何进行。

于 2013-08-08T19:30:24.870 回答