Проектирование, хранение и поиск динамических форм - PullRequest
0 голосов
/ 15 августа 2010

Что такое дизайн пользовательских динамически генерируемых форм?

Хотелось бы реализовать что-то вроде CCK drupal.

В панели управления владелец формы разрабатывает, какие поля должны быть вформа и порядок, в котором должны быть поля формы, а также атрибуты поля, такие как «обязательный: да / нет»

После того, как форма была разработана, конечный пользователь заполняет ее и отправляет.

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

Обычно, когда кто-то пишет форму, чьи данныехранится в БД, также записывается код, который понадобится для ввода данных формы в базу данных.Как писать этот код, когда форма всегда меняется с разными полями почти каждый раз?

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

Я не хочу иметь новую таблицу для каждой отправки формы, и при этом я не хочу вручную писать код для каждой формы.

Это основные типы полей, которые мне понадобятся

  • Текстовое поле
  • Выбор списка
  • Кнопки радио
  • Контрольный список
  • Поле даты
  • Текстовое поле

Ниже приведен дизайн базы данных, который я придумал

table1

id, formid, тип, позиция, имя, значение, выберите (иностранный), несколько

id: уникальный идентификатор для этой записи, auto

formid: уникальный идентификатор формы, все поля в определенной форме будут иметь одинаковый тип formid

: это может быть текстовое поле,выберите список, радио ....

позиция: поля 1-го, 2-го или 5-го?

имя: уникальное имя для поля

значение: еслиэто текстовое поле, здесь вводится значение по умолчанию.Если тип поля не нуждается в значении, он остается нулевым.

select (foreign): если это поле списка выбора, будет присутствовать внешний idnumber.

множественный: если вы хотите разрешить множественный выбор в этом списке, то значение будет равно 1, иначе оно будет равно нулю

идентификатор table2, выберите значение

Итак, если вы хотитеПоле со списком выбора, в таблице 1, у вас будет тип как поле выбора, и у вас будет значение внешнего ключа, связанного с «выбором» в таблице 2.

Если вы хотите текстовую область, введите table1будет текстовой областью, и если вам нужно значение по умолчанию, вы введете его, иначе оно будет нулевым

table1 не имеет списка всех атрибутов, но вы получите точку.В зависимости от того, какой тип поля вы хотите, определяет, какой атрибут вам нужно будет заполнить.Если для этого атрибута необходимо будет хранить дополнительные данные, например, список выбора, просто создайте отношение, как это было сделано с таблицей2

Чтобы отобразить форму, система интерпретирует данные в базе данных и создает поля.соответственно.

Пока все хорошо, но как вы храните данные в базе данных, когда поля постоянно меняются?

Какой тип БД необходим для хранения таких данных?

Является ли вышеуказанный правильный способ динамического создания форм?

1 Ответ

0 голосов
/ 10 сентября 2010

Я нашел это:

http://formutils.riaforge.org/

...