0

カスタムの動的に生成されたフォームの背後にある設計は何ですか?

drupal の CCK のようなものを実装したいと考えています。

コントロール パネルで、フォームの所有者は、フォームにどのフィールドを配置するか、フォーム フィールドを配置する順序、および「必須: はい/いいえ」などのフィールドの属性を設計します。

フォームが設​​計されると、エンド ユーザーはフォームに入力して送信します。

現在、ユーザーにカスタム フォームを作成してもらうことができます。問題は、フォームのコンテンツの保存と取得にあります。

通常、フォームを作成すると、誰のデータが db に保存され、フォームのデータをデータベースに入力するために必要なコードも作成されます。フォームがほぼ毎回異なるフィールドで常に変化している場合、このコードはどのように記述されるのでしょうか?

基本的に、フィールドの数や種類に関係なく、カスタム フォームの保存と取得を可能にするデータベース設計を理解する必要があります。

フォームを送信するたびに新しいテーブルを作成したくはありませんし、フォームごとに手動でコードを記述したくもありません。

これらは私が必要とする主なフィールドタイプです

  • テキストボックス
  • リストを選択
  • ラジオボタン
  • チェックリスト
  • 日付フィールド
  • テキストエリア

以下は、私が思いついたデータベース設計です

表1

id、formid、type、position、name、value、select(foreign)、multiple

id: そのレコードの一意の ID、auto

formid: 一意のフォーム ID。特定のフォームのすべてのフィールドが同じフォーム ID を共有します。

タイプ: テキストボックス、選択リスト、ラジオなどの可能性があります。

位置: フィールドは 1 番目、2 番目、または 5 番目ですか?

name: フィールドの一意の名前

値: テキストボックスの場合、デフォルト値がここに入力されます。フィールドのタイプが値を必要としない場合は、null のままになります。

select (foreign): 選択リスト ボックスの場合、外部 ID 番号が表示されます。

複数: そのリストボックスで複数選択を許可する場合、値は 1 になります。それ以外の場合は null になります。

table2 ID、選択、値

したがって、選択リスト ボックス フィールドが必要な場合は、table1 にタイプが selectbox になり、table2 に「select」に関連する外部キーの値が表示されます。

テキスト領域が必要な場合は、table1 に入力するとテキスト領域になります。デフォルト値が必要な場合は入力します。それ以外の場合は null になります。

table1 にはすべての属性のリストが含まれているわけではありませんが、要点はわかります。必要なフィールド タイプに応じて、入力する必要がある属性が決まります。その属性が追加のデータを格納する必要がある場合、たとえば選択リスト ボックスなど、table2 で行われたように単純に関係を作成します。

フォームをレンダリングするために、システムはデータベース内のデータを解釈し、それに応じてフィールドを作成します。

ここまでは順調ですが、フィールドが常に変化している場合、どのようにしてデータをデータベースに保存するのでしょうか?

そのようなデータを保存するには、どのようなデータベース設計が必要ですか?

上記はフォームを動的に生成する正しい方法ですか?

4

1 に答える 1

0

私はこれを見つけました:

http://formutils.riaforge.org/

于 2010-09-10T12:02:58.330 に答える