在我的数据库中给出这个表:
|AnswerID|QuestionID|AnswerText|
|21 |2 |User |
|22 |2 |Admin |
|23 |2 |Guest |
|24 |2 |User2 |
我使用PAGINATION
创建了一个测验,以在每个页面上显示单个问题及其选项。示例代码段如下所示:
$questionID=0;
while ($list = mysql_fetch_assoc($result))
{
echo $list['QuestionID'] . ":" . $list['QuestionText'] . "<br/>";
$questionID=$list['QuestionID'];
}
$optionsquery="SELECT AnswerText,AnswerID FROM Options Where QuestionID=".$questionID;
$optionsresult=mysql_query($optionsquery) or die ('Query failed:'. mysql_error());
while($row = mysql_fetch_array($optionsresult))
{
echo "<br>";
echo "<input type='radio' id='radio-" . $row["QuestionID"] . "-"
. $row["AnswerID"] . "' name='" . $row["QuestionID"]
. "' value='" . $row["AnswerID"] . "' />
<label for='radio-" . $row["QuestionID"] . "-" . $row["AnswerID"] . "'>"
. $row["AnswerText"] ."</label><br/>";
echo "<br>";
}
这是我的目标。给定这种关系AnswerID&lt; - &gt; AnswerText, 我想将用户选择的所选广播存储到以下格式的数据库表中:
|StudentID|QuestionID(e.g: 1)|QuestionID(e.g: 2)|
|678D |AnswerID(e.g: 11) |AnswerID(e.g: 22) |
|681D |AnswerID(e.g: 14) |AnswerID(e.g: 23) |
如上所示,我不是对每个页面的问题和选项进行硬编码,而是从我的表数据库中获取。所有代码只用一个PHP文件编写。我用google搜索(在PHP上),但我很困惑如何实现我的目标。任何代码(PHP)片段都会有所帮助,因为我失去了想法。提前谢谢。
答案 0 :(得分:1)
我建议你不要以这种方式存储它(即每列一个问题)....你最好创建一个链接student
,question
和{{1}的表格}}:
answer
这为您提供了更好的灵活性 - 例如,您可以轻松增加问题数量。
为了使处理提交的表单更容易,我会将HTML输出更改为:
Student question answer
678D 1 11
678D 2 22
681D 1 14
681D 2 23
这会产生一个数组的输入,当这样提交时可以处理它们:
echo "<input type='radio' id='question[" . $row["QuestionID"] . "]' name='question[" .
$row["QuestionID"] ."]' value='" . $row["AnswerID"] . "' />";
您需要将$questions = $_POST['question']; // this returns an array like questions[questionid]
foreach ($questions as $qid => $aid) {
$query = 'INSERT INTO answertable(student,question,answer) VALUES
($sudentid,$qid,$aid)';
}
更改为您用于记录答案的表的名称。并且answertable
将从当前会话中获得(我猜测你存储它的地方)