Мне нужно хранить данные, которые были отправлены из нескольких форм – забавный бит, так как эти формы будут созданы компоновщиком форм. Я планирую предоставить пользователям доступ, я не знаю, сколько полей будет в форме, или сколько полей пользователь будет отправлять. Я подумал о структуре таблицы, подобной следующей (сама форма сохраняется как php для include):
| FormId | FormType | InputID | InputType | LongText | Text | Date |
FormId относится к другой таблице, хранящей местоположение файла формы и т. Д. Для включения (например, ниже), Идентификатор ввода относится к вводу на странице.
| FormId | FormType | PathToForm | DateCompleted |...etc
ввод «a» из формыId 1 может выглядеть так:
<input id="a" name="a" type="text" value="example"/>
тогда как ввод «a» из formId 2 может выглядеть так:
<textarea name="a" id="a"></textarea>
Что я могу записать в таблицу следующим образом:
| FormId | FormType | InputID | InputType | LongText | Text | Date | -------------------------------------------------------------------------- | 1 | 1 | a | text | NULL | example | NULL | | 2 | 2 | a | textarea | example | NULL | NULL |
Количество «входов» для каждой формы потенциально неограниченно – входы на разных шаблонах форм могут быть разных «типов» каждый раз.
Мой вопрос (наконец!) – это лучший способ, которым я могу это сделать? Я знаю, что сохранение вывода формы в каждой строке не совсем идеально, но без наличия сотен таблиц и, не теряя возможности извлекать данные с пользой, когда мне это понадобится в будущем (через «FormType») не уверен в каком-либо другом способе структурирования. На самом деле это не похоже на что-то подобное, извините, если это звучит глупо!
В этой ситуации есть что-то в mysql 5.7. Тип JSON .
Что вы можете сделать, это преобразовать форму в ассоциативный массив, а затем сохранить это в поле JSON.
Однако есть несколько предостережений, но это поле, хотя с возможностью поиска, не так эффективно при поиске, как обычный столбец varchar. Кроме того, если вы хотите использовать его в соединении, вы испытываете серьезные проблемы .