从php中的5个随机多项选择中获得答案

时间:2015-04-14 20:12:59

标签: php

我正在尝试构建一个Web应用程序,从数据库中生成5个随机问题以及4个可能的答案。每个问题都有自己的ID。当用户单击提交按钮时,我会卡住它,它将指向result.php页面,其中显示正确答案的数量。我不知道如何将问题ID与数据库中的答案相匹配,因为同时有5个问题(5个表格)。这是我到目前为止所尝试的内容

            <script>
    function sender() {
    document.forms["form1"].submit();
    document.forms["form2"].submit();
    document.forms["form3"].submit();
    document.forms["form4"].submit();
    document.forms["form5"].submit();
    return true;
    }
    </script>
    <?php

    include('db.php');

    $sql = "SELECT * FROM quizzes ORDER BY rand() limit 5";   
    $result = mysql_query($sql);

    while($data = mysql_fetch_array($result)){
    echo '
    <form id="form'.$i.'" action="result.php" method="post">
    <table>
    <tr><td>'.$data['content'].'</td></tr>
    <tr><td><input type="radio" name="option" value="a">'.$data['a'].'</td></tr>
    <tr><td><input type="radio" name="option" value="b">'.$data['b'].'</td></tr>
    <tr><td><input type="radio" name="option" value="c">'.$data['c'].'</td></tr>
    <tr><td><input type="radio" name="option" value="d">'.$data['d'].'</td></tr>

    </table>
    </form>
    ';

    }}
    echo '
    <input type="button" value="Submit" onclick=javascript:sender()>
    ';

?>

1 个答案:

答案 0 :(得分:0)

我更喜欢Herdoc语法,所以我在MYSQL_NUM中使用mysql_fetch_array

然后将问题ID添加到单选按钮的名称中

如果问题在id以外的列中编号,请使用,例如

`SELECT `number`,`

$sql = "SELECT `id`,`content`,`a`,`b`,`c`,`d` FROM quizzes ORDER BY rand() limit 5";   
mysql_query($sql);
echo '<form action="result.php" method="post"><div>';
while($data = mysql_fetch_array($result,MYSQL_NUM)){
 echo <<<EOF
<table><tr><td>$data[1]</td></tr>
<tr><td><input type="radio" name="option$data[0]" value="a">$data[2]</td></tr>
<tr><td><input type="radio" name="option$data[0]" value="b">$data[3]</td></tr>
<tr><td><input type="radio" name="option$data[0]" value="c">$data[4]</td></tr>
<tr><td><input type="radio" name="option$data[0]" value="d">$data[5]</td></tr></table>
EOF;
}
echo '<input type="submit" value="Submit" /></div></form>';

获得结果:

要获得提交的答案,您的result.php应该如下所示:

foreach $_POST as $key => $value){
  if(substr($key,0,6) == 'option`){
    $id = intval(substr($key,6));
    $answers[$id] = $value;
  }
}
var_export($answers);

如果您在'选项'后面的问题ID不是全数字,,请删除intval()

然后查找每个答案的问题:

foreach($answers as $id => $answer){
  $sql = "SELECT .... WHERE `id` = $id"; //If non-numeric, add single quotes '$id'
}

更新

这应该是您的基本形式的样子:

<form action="result.php" method="post"><div>

<tr><td><input type="radio" name="option1" value="a">Answer A</td></tr>
 ...
<tr><td><input type="radio" name="option5" value="a">Answer D</td></tr>

<input type="submit" value="Submit" /></div></form>

<form>之前的<input type="submit" /> 提交后

最有可能的问题是一套未公开的双引号 确保所有双引号都已关闭,尤其是:"result.php",包括每个单选按钮的名称和值。

如果右键单击表格并选择“检查元素”,您将看到:

enter image description here

以上内容来自FireFox Inspector

点击<form>

上的右箭头

然后你应该看到:

<form
  <div></div>
</form

您应该始终通过W3C HTML标记验证器运行您的网页:

W3C Markup Validation Service