我正在尝试构建一个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()>
';
?>
答案 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"
,包括每个单选按钮的名称和值。
如果右键单击表格并选择“检查元素”,您将看到:
以上内容来自FireFox Inspector
点击<form>
然后你应该看到:
<form
<div></div>
</form
您应该始终通过W3C HTML标记验证器运行您的网页: