我被要求写一个在线测试。我有 2 个表格,一个包含问题(2 个字段,一个用于 id,一个用于问题文本)。另一个用于保存答案的表(有 3 个字段,一个用于 id,一个用于问题 id,一个用于答案)。
到目前为止,我是这样写的:
<form name="test" method="post" action="index.html">
<div class="slideshowContainer">
$question_query=dbquery("SELECT * FROM questions");
while($question_array=dbarray($question_query)){
echo'
<div class="question">
'.$question_array['question_text'].'
<br />
<textarea name="'.$question_array['id'].'"></textarea>
</div>
';
}
echo'
<input id="finish" type="submit" name="finish_test" value="send" />
</div>
</form>';
我还使用循环插件,因此用户可以将问题视为幻灯片,并在为每个特定问题提供的每个文本区域中编写答案。
我不能做的是我应该写if(isset($_POST['finish_test'])部分的方式。因为据我所知,以这种方式接收的数据是数组的形式。所以我想当我要保存答案并将它们发送到我的数据库时,我可能需要另一个 for 或 while 元素。
你能提出什么建议?
您将需要遍历 $_POST 的结果,但为代码中的每个文本区域制作不同的 id 会很好。这样您就可以确定哪些是哪些答案。所以要做到这一点,我会做这样的事情。
while($question_array=dbarray($question_query)){
i = 0;
echo'
<div class="question".i>
'.$question_array['question_text'].'
<br />
<input id='question' type='hidden' value="'.$question_array['id'].'"/>
<textarea name="answer".i></textarea>
</div>';
i++;
}
现在,由于我知道我从 0 开始并在问题结束时结束,我可以循环访问 $_POST['answer'.i] 并进行插入。
while ($_POST['answer'.$i]) {
$i = 0;
//insert query after establishing connection, which i believe you got figured out
$sql = 'INSERT INTO ANSWERS VALUES ($_POST['answer'.$i], $_POST['question'.$i])';//Note you must have the question id in some hidden input field
$result = mysql_query( $sql, $conn );//where $conn is your connection object
//after this you might want to do something with the $result,
$i++;
}