【问题标题】:Dynamically Loading Form Fields in PHP在 PHP 中动态加载表单字段
【发布时间】:2016-09-06 10:03:23
【问题描述】:

如果我看起来很傻,请原谅我,因为我是 PHP 新手并从 SO 学习东西。

我会尽量解释清楚我喜欢什么

目前我有一个针对不同级别用户的个人资料页面,例如

管理员、1 级、2 级、3 级

所有 4 个个人资料页面的字段都不相同。

对于级别 1,我将显示姓名、年龄、图片

对于第 2 级,我将显示姓名、图片、位置、国家

Level3 的其他一些

我已经完成了上述工作,并且没有任何问题。

现在我需要让管理员动态选择表单字段。就像,管理员中应该有一个设置类型的页面,我将在级别名称下列出不同级别用户所需的所有字段,并在其附近有一个复选框(我完成了)。

现在的困惑是管理员可以检查需要哪些字段,这将反映在该用户的个人资料页面中,我对如何继续感到困惑,因为我不知道如何继续。此外,他应该能够添加额外的字段(仅允许文本框),就像他将单击添加并输入标签名称一样。这个新添加的文本框的功能应该类似于将值存储在 db 中并进行检索。

希望我解释清楚。如果您对任何事情不清楚,请原谅我并发表评论,我会进一步解释。

我需要帮助来获得有关如何满足我的要求的想法或结构。

【问题讨论】:

  • 你可以在你的数据库中创建一个表,输入类型的列,名称标签的列,以及谁将使用该字段的权限列。
  • @LoganWayne 感谢队友的想法。我会解决这个问题,并让你知道它是如何出现的。如上一段中提到的,您能否提供一个自己添加字段的想法
  • 你说adding the field by himself是指管理员还是用户?
  • @LoganWayne 管理员伙伴
  • 您可以在input_tb 中添加一个新字段。

标签: php mysql forms dynamic


【解决方案1】:

您可以在数据库中创建一个表,输入类型的列,名称标签的列,以及谁将使用此字段的权限。

表格 (input_tb) 将如下所示:

input_id | input_type | name_tag |   label  |  user_type
---------+------------+----------+----------+-------------
    1    |    text    |   name   |   Name   |     1 /* ASSUMING 1 IS FOR LEVEL 1 PROFILE */
    2    |   number   |   age    |    Age   |     1
    3    |    file    |  picture |  Picture |     1

假设您的 user_tb 如下所示:

user_id | user_type
--------+-----------
   1    |     1 /* MEANS THAT USER 1 HAS A LEVEL 1 PROFILE */

因此,当用户访问表单时,您会在 input_tb 中获取相应的行(假设您将 user_type 存储在下面的会话中):

$stmt = $con->prepare("SELECT input_id, input_type, name_tag, label FROM input_tb WHERE user_type = ?");
$stmt->bind_param("i", $_SESSION["user_type"]);
$stmt->execute();
$stmt->bind_result($inputid, $inputtype, $nametag, $label);
while($stmt->fetch()){
    echo $label.': <input type="'$inputtype..'" name="'.$nametag.'"><br>';
}
$stmt->close();

然后,信息将存储在另一个表中:

info_tb 的示例,此处使用单个示例用户:

info_id | user_id | input_id |   input_data 
--------+---------+----------+-----------------
   1    |    1    |    1     |    Richard      /* User 1's Name */
   2    |    1    |    2     |       18        /* User 1's Age */
   3    |    1    |    3     | profile_pic.png /* User 1's Picture */

提醒:

  • 当输入字段为textarea 时,您还可以考虑对代码设置条件
  • 当输入字段是文件类型时设置条件。在将相应的文件名插入数据库之前,它必须经过上传过程

【讨论】:

  • 真的非常感谢队友。根据您的回答,我将继续并在此处更新状态 mate
猜你喜欢
  • 2015-08-04
  • 1970-01-01
  • 2015-04-11
  • 1970-01-01
  • 1970-01-01
  • 2017-09-29
  • 2019-08-29
  • 1970-01-01
  • 2010-10-30
相关资源
最近更新 更多