2013-10-12 2 views
0

Я прошу написать онлайн-тест. У меня есть две таблицы, одна включает вопросы (2 поля, один для 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'])). Поскольку, как я знаю, полученные данные имеют форму массива. Поэтому я подумал, что мне может понадобиться еще один элемент while или while, когда я собираюсь сохранить ответы и отправить их в мою базу данных.

Что вы можете предложить?

ответ

0

Уверен, что вам нужно будет пробивать результаты $ _POST, но приятно использовать разные идентификаторы для каждой из текстовых областей вашего кода. Таким образом, вы можете определить, какие из них отвечают. Чтобы сделать это, я бы сделал что-то подобное.

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

я вижу. Спасибо за Ваш ответ. И могу ли я спросить, как я должен написать запрос на вставку? Таблица ANSWERS имеет следующие поля: id, question_id, answer_text. –

+0

Да, это уже выяснено, и спасибо за то, что помогли мне. Thumbs up;) –

+0

@ArashBarazandeh Я рад, что я могу быть любой помощью, но вы действительно можете сделать Thumbs, голосуя за мой ответ, и если вы найдете ответ правильным, вы можете его принять. Thnx! – altsyset

Смежные вопросы