【问题标题】:Save if a field should be used - SQL保存是否应使用字段 - SQL
【发布时间】:2013-03-07 19:08:38
【问题描述】:

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

我希望我的问题有点清楚,我希望有人可以帮助我或者给我一些建议谢谢!

【问题讨论】:

    标签: php html sql forms phpmyadmin


    【解决方案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 模式,这仅意味着您将测试集成到代码中正在处理表单提交)。

    【讨论】:

      猜你喜欢
      • 2020-01-08
      • 2020-11-09
      • 2013-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多