如果应该使用字段,请保存 - SQL

时间:2013-03-19 07:38:40

标签: php html sql forms phpmyadmin

我正在创建一个新的应用程序,它就像一个表单生成器。如果字段应出现在表单中,管理员可以使用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

我希望我的问题有点清楚,我希望有人可以帮我一点,或者给我一些小贴士,谢谢!

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模式,那只是意味着你要将测试集成到代码中正在处理表格提交)。