0

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

你有什么建议?

4

1 回答 1

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

现在,因为我知道 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++;
}
于 2013-10-12T12:08:07.760 回答