如何使用PHP相应地将每个页面上的选定单选按钮存储到数据库中?

时间:2012-03-18 10:18:07

标签: php mysql html

在我的数据库中给出这个表:

|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)片段都会有所帮助,因为我失去了想法。提前谢谢。

1 个答案:

答案 0 :(得分:1)

我建议你不要以这种方式存储它(即每列一个问题)....你最好创建一个链接studentquestion和{{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将从当前会话中获得(我猜测你存储它的地方)