请原谅我,如果我看起来很傻,因为我是PHP的新手并从中学习东西。
我会尽可能清楚地解释我的内容
目前,我有一个针对不同级别用户的个人资料页面,例如
管理员,级别1,级别2,级别3
所有4个个人资料页面的字段都不相同。
对于等级1,我将显示姓名,年龄,图片
和
对于等级2,我将显示姓名,图片,位置,国家
和
Level3的其他一些
以上我已经完成了它并没有任何问题。
现在我需要的是让管理员动态选择表单字段。比如,管理员应该有一个设置类型的页面,我将列出级别名称下不同级别用户的所有需要的字段,附近有一个复选框(我已完成)。
现在的困惑是管理员可以检查需要哪些字段,这将反映在该用户的该个人资料页面中,我对如何继续感到困惑,因为我无法知道如何继续。此外,他应该能够添加额外的字段(仅允许文本框),就像他将单击添加并输入标签名称一样。这个新添加的文本框应该像在db中存储值并检索一样。
希望我能解释清楚。如果你不清楚任何东西,请原谅我并发表评论,我会进一步解释。我需要帮助来获得关于如何处理我的要求的想法或结构。
答案 0 :(得分: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