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

一种方法是为表单中的每个输入添加一个包含一行的表格,如下所示

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 回答