PHP Вставить ответ формы в отдельные таблицы/строки MySQL

У меня есть форма, которую после отправки через POST необходимо вставить в две отдельные таблицы в зависимости от поля. Каждое поле должно быть добавлено как отдельная строка.

Представьте себе опрос; всего четыре раздела. Для каждого вопроса в разделе пользователь выбирает значение от 1 до 5. В нижней части каждого раздела также есть необязательная текстовая область примечаний.

Каждый вопрос имеет свой уникальный идентификатор в базе данных в таблице «вопросы». Эти вопросы содержат идентификатор раздела (таблица "разделы"), к которому он принадлежит, для справки.

Вопрос 1:

Как я могу вставить каждый ответ как отдельную строку в таблицу под названием «ответы» с идентификатором вопроса?

Структура «ответов» выглядит так:

идентификатор (ИИ) | id_вопроса | значение (представлено пользователем, 1-5) | response_id

Вопрос 2:

Как я могу затем вставить каждую заметку для каждого раздела в таблицу под названием «заметки» с идентификатором каждого раздела?

Структура «заметок» выглядит так:

идентификатор (ИИ) | section_id | значение (представлено пользователем) | response_id

Response_id — это результирующий идентификатор вставки ответа пользователя в таблицу под названием «ответы». Эта таблица связывает все вместе для вывода результатов для каждого отправленного пользователем ответа.

Заранее спасибо.


person Wes Dollar    schedule 08.02.2013    source источник
comment
Это звучит как относительно простые запросы... на чем вы застряли?   -  person Explosion Pills    schedule 08.02.2013
comment
вы можете запускать несколько разных запросов в одном скрипте. даже подключение к нескольким разным БД и т. д. Если вы можете вставить в одну БД, вы можете вставить во многие.   -  person Marc B    schedule 08.02.2013
comment
@взрывная таблетка Я зациклился на разделении ответов. Запросы просты, но по какой-то причине я не понимаю, как разделить ответы на сообщения, чтобы генерировать запросы.   -  person Wes Dollar    schedule 08.02.2013


Ответы (2)


Возможно, вы захотите использовать массив для отслеживания нужных вам идентификаторов. Ваш блок HTML должен выглядеть примерно так:

<h3>Question '.$questionId.': Your question title here</h3>
<input type="hidden" name="question_id" value="'.$questionId.'" /> //Not necessary, but just to show you that a hidden field can be useful too 
<input type="text" name="answer['.$questionId.']" />

Затем вы просто используете данные $_POST как обычный массив, в цикле for или в большом запросе (лучшая производительность зависит от количества полей/данных, с которыми вы имеете дело).

Дополнительная информация о многомерных массивах в этом сообщении: Отправка многомерного массива через POST с помощью php

person Alb Dum    schedule 08.02.2013

Вы можете сделать что-то вроде этого. Вы сказали, что у вас есть идентификатор вопроса для каждого вопроса, поэтому, когда пользователь выбирает ответ, дайте имя каждому вопросу, подобному этому.

name = "question[<?php echo $question_id ?>]"

<select name="cars">
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>

For the not just give simple name. When user submits it take the entire question[$ids] array loop through each id and insert into answers table using question id. You need to little bit of array operations.

Для Notes вы просто используете идентификатор раздела в поле имени и обычно вставляете его в базу данных.

person Venkata Krishna    schedule 08.02.2013
comment
Спасибо! Это заставило меня двигаться в правильном направлении. Кодирование прочь сейчас. - person Wes Dollar; 08.02.2013
comment
если это поможет вам написать код для вашего ответа, пожалуйста, проголосуйте за него - person Venkata Krishna; 08.02.2013