我正在创建一个新的应用程序,它就像一个表单生成器。如果字段应出现在表单中,管理员可以使用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
我希望我的问题有点清楚,我希望有人可以帮我一点,或者给我一些小贴士,谢谢!
答案 0 :(得分: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模式,那只是意味着你要将测试集成到代码中正在处理表格提交)。