2013-12-05 2 views
0

Я создаю плагин в wordpress для связи с нами и тем, что я создаю поля (текстовое поле, текстовое поле и т. Д.) Динамически исходя из моего требования. поэтому нет фиксированного количества полей. Я храню динамически созданные поля в моей таблице db.Как сделать динамическое поле таблицы db

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

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

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

предложение будет весьма оценил ...

Спасибо advnce

+0

Является ли контакт с нами данными, которые вы получили от текстового поля, текстового поля и т. Д.? Кроме того, зачем вам 3 в одном и 5 в другом? Наконец, каково было бы максимальное количество полей и какова была бы форма для этого? –

+0

Возможно, создайте db, в котором рассказывается, сколько полей вы используете, а затем сохраняете данные вместе с некоторым разделителем. Я имею в виду, что в БД: 'textareas' =' '3'', 'dataTextareas' ='' text1 | text2 | text3''. Это просто идея – Don

ответ

-1

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

вы можете сделать это ALTER ...

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

ALTER TABLE table_name ADD $name(Column name) //$name may be your attribute name <input name=""> 

и точно так же, когда вы удалите свой поле на th во время вы можете оставить ваш столбец таблицы

ALTER TABLE table_name DROP $name(Column name) //$name may be your attribute name 

здесь я предположил, что вы уже создали таблицу table_name (без полей)

надеюсь, что это может помочь вам

+0

Я не являюсь нисходящим, но если вы это сделаете, вы создаст столбец для каждого поля. Я не думаю, что это хорошая идея – Don

+0

да, я знаю, и это то, что хочет OP, я думаю .. – Kalpit

+0

это я могу сделать, но мой вопрос в том, что это хороший способ производительности? –

0

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

Должно быть достаточно просто взглянуть на массивы php.

0

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

1

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

Итак, оригинальный предмет «сделать дб поля таблицы динамическим» возможно, но не хороший план, у нас еще есть альтернативный план:

магазин динамическое поле в одной таблице столбца

Найти путь для объединения динамического поля в строку, используйте разделитель или используйте json_encode, если столбец достаточно длинный (TEXT -> MEDIUMTEXT), вы можете иметь неограниченное динамическое поле.

Создать достаточно колонки в начале

Apearently это не так хорошо, как верхний план, но это легче понять, и искать в них колонки легче тоже.

Кстати, вы считали преобразование этих динамических столбцов в строки?

0

Я согласен с остальными. Динамическое создание таблиц базы данных плохое. Схема базы данных вряд ли когда-либо изменится после завершения проекта.

Одно из решений: Если у вас был контакт с несколькими адресами, вы создаете родительско-дочерние отношения следующим образом. Возможно, вы можете сделать что-то похожее на вашу ситуацию.

Контакт
длинный ContactId первичный ключ
имя
AddressID

Адрес
длинный AddressID первичный ключ
длинный ContactId внешний ключ
StreetAddress
CityId
CountryId

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