2

フォームビルダーのような新しいアプリケーションを作成しています。フィールドをフォームに表示する場合、管理者は HTML チェックボックスで選択できます。現在、データを保存するためにデータベースに複数のフィールドとテーブルがありますが、各フィールドを使用する必要があるかどうかをどのように判断できるかわかりません。

例えば。

tbl_users
- firstname
- lastname
- street
- country
- city

tbl_data1
- datafield1
- datafield2
- datafield3

tbl_data2
- checkbox1
- checkbox2
- checkbox3

フィールドを使用/レンダリングする必要があるかどうかを示すために、どこかに「1」または「0」を追加することを考えていました。これを保存する最良の方法は何ですか?「テーブルの間」を使用していますか?

お気に入り:

admin_generated_field
- id             1
- user_id        32
- checkbox       0
- checkbox1      1
- checkbox2      0
- textfield1     1

私の質問が少し明確であることを願っています.

4

1 に答える 1

1

1 つのアプローチは、以下のように、フォームの入力ごとに 1 行のテーブルを追加することです。

active_elements
-id
-column_name
-visible

次に、表示されている要素についてテーブルをクエリします。PDOを使用している場合、次のようになります

<?php
$user = 'admin';
$pass = '';
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
$active = $dbh->query('SELECT column_name from active_elements WHERE visible=1')->fetchAll(PDO::FETCH_COLUMN);
?>

最後にフォーム ビューで、入力を表示する前に $active 配列を検索します

if(in_array('q1', $active)){
    print "<label for='form[q1]'>Q1:</label><input name='form[q1] type='text' />";
}

これはプレゼンテーションの問題なのか、アクセス制御の問題なのか、それともその両方なのか? 最低限、このテストをビュー レイヤーで実行したいようですが、モデル レイヤーでも実行したい場合があります (MVC パターンを使用していない場合は、テストをコードに統合することを意味します)。フォーム送信を処理しています)。

于 2013-03-24T20:03:40.960 に答える