我被要求写一个在线测试。我有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元素。
你有什么建议?
答案 0 :(得分:0)
当然,您需要循环遍历$ _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++;
}