基本的なフォームジェネレーターを作成しようとしています。したがって、ユーザーは、ある種の CMS システムで HTML フォームをクリックすることができます。このためのデータベース設計についてはまだ検討中ですが、チェックボックスに関しては質問があります。
私のデータベース設計は次のようになります。
田畑
pk_field_id | field_type | field_name | default_value
1 | textfield | text1 | Some default value
2 | textfield | text2 | NULL
3 | radio | radio1 | NULL
4 | checkbox | check1 | NULL
それが基本的に、選択したフィールドを保存する方法です。このテーブルを読むと、switch
ステートメントを実行してfield_type
値を読み取ることができるので、レンダリングするフィールドの種類がわかります。
しかし、それだけではありません。ラジオボタンのようなグループ化された要素が持つことができる「値」を含むテーブルもあります。
フィールド値:
fk_field_id | label | value
3 | Radio 1 | radio1
3 | Radio 2 | radio2
4 | Check 1 | check1
4 | Check 2 | check2
だから今、私はテーブルを読むとき、私はテーブルを読むことfields
ができます。そうすれば、どのオプションが に属し、何が に属しているかがわかります。これはすべてうまくいっているようです。JOIN
fieldvalues
radio
checkbox
今、トリッキーな部分です。フォームが生成されたら、入力した値を保存する場所も必要です。したがって、そのForm Engine
ための追加のテーブルが自動的に作成されます。field_name
テーブル内の各列を作成しfields
ます。したがって、この場合、動的に作成されたテーブルは次のようになります。
マイフォーム
pk_form_id | text1 | text2 | radio1 | check1 | language_id
ユーザーが生成された HTML フォームにデータを入力すると、入力したすべてのデータを簡単に保存できます。テキストフィールドには 1 つの列しか必要ないためです。グループ化されたラジオ ボタンは、最終的に 1 つの値のみを送信します。ただし、2 つ以上のチェックボックスがオンになっている場合、チェックボックスのグループはもちろん複数の値を送信できます。
今私の問題は、どうすればそれをデータベースに保存できますか? 特定の文字で区切られた 1 つの列に複数の値を格納するのは良い考えではないと思います。それはまた、検索を実行することを困難にするからです.
簡単なクエリmyform
でテーブルから行を簡単に取得できるため、最初はこれが良い方法だと思いました。SELECT ... WHERE
とにかく、これが適切な設定であるかどうかはわかりません...そして、チェックボックスが送信できる複数の値をどのように処理しますか?
これについてのアイデアはありますか?