如果需要使用某个字段,则保存—SQL


Save if a field should be used - SQL

我正在创建一个新的应用程序,它就像一个表单生成器。管理员可以使用HTML复选框选择是否应该在表单中显示某个字段。现在我有多个字段和表在我的数据库中保存数据,但我不知道我怎么能告诉每个字段,如果它应该使用或不。

例如

tbl_users
- firstname
- lastname
- street
- country
- city
tbl_data1
- datafield1
- datafield2
- datafield3
tbl_data2
- checkbox1
- checkbox2
- checkbox3

我正在考虑在某个地方添加一个'1'或'0',如果字段应该使用/渲染或不。拯救它的最好方法是什么?使用"between表"?

:

admin_generated_field
- id             1
- user_id        32
- checkbox       0
- checkbox1      1
- checkbox2      0
- textfield1     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模式,这只是意味着你将测试集成到处理表单提交的代码)。