在线测试中保存答案并将其发送到数据库

时间:2013-10-12 11:22:05

标签: mysql arrays testing insert

我被要求写一个在线测试。我有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元素。

你有什么建议?

1 个答案:

答案 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++;
}