我有一个“用户个人资料”表单,其中包含以下字段:
<form>
First Name: <input id="first_name" />
Last Name: <input id="last_name" />
Phone Number: <input id="phone_number" />
City: <input id="city" />
</form>
但是,如果我不希望“电话号码”和“城市”对某些用户可见,该怎么办?
如何动态隐藏这些字段,具体取决于例如哪个用户登录?我目前正在使用PHP和MySQL。是否最好将“字段ID”添加到数据库中,然后查询数据库记录以查看应隐藏哪些字段以及哪些字段应该可见?或者有更好的方法吗?
如果这有点含糊不清我道歉。如果没有意义,我可以试着澄清一下。
非常感谢。
编辑:我想澄清一下我想要实现的目标。我试图根据用户登录动态显示字段。另外,当我说“隐藏”时,我实际应该说“已删除”。请参阅下面的示例,例如,
如果JoeUser
登录,他会看到:
<form>
First Name: <input id="first_name" />
Last Name: <input id="last_name" />
Phone Number: <input id="phone_number" />
City: <input id="city" />
</form>
但是,如果JaneUser
登录,她会看到(根据数据库中设置的首选项):
<form>
First Name: <input id="first_name" />
Last Name: <input id="last_name" />
</form>
我的问题是:实现这一目标的最佳方法是什么?我假设这些首选项需要由数据库驱动。任何输入都会很棒。
答案 0 :(得分:2)
根据您构建网站的方式,有很多方法可以做到这一点但是因为您不熟悉PHP我会假设它只是一个内联的过程脚本。在这种情况下,您需要检查用户是否在会话中设置,然后根据输出显示或隐藏。
类似于以下内容
<?php if(isset($_SESSION['id'])) : ?>
<form>
First Name: <input id="first_name" />
Last Name: <input id="last_name" />
Phone Number: <input id="phone_number" />
City: <input id="city" />
</form>
<?php endif; ?>
if语句检查是否设置了会话ID(这可能会根据您处理用户会话的方式而改变等),然后显示表单。
修改强> 刚刚注意到您已编辑了原始问题。要做到这一点你可以这样类似于以下内容,这再次假设您正在使用会话并且您在会话中设置了用户类型(不是很好,但作为初学者,它很快)。
<?php if(isset($_SESSION['id'])) : ?>
<form>
First Name: <input id="first_name" />
Last Name: <input id="last_name" />
</form>
<?php else if(isset($_SESSION['id']) && (isset($_SESSION['user_type']) && $_SESSION['user_type'] == 'phoneuser')) : ?>
<form>
First Name: <input id="first_name" />
Last Name: <input id="last_name" />
Phone Number: <input id="phone_number" />
City: <input id="city" />
</form>
<?php endif; ?>
答案 1 :(得分:0)
你可以在php文件的服务器端隐藏dinamycally或通过php为js尝试设置变量,并通过javascript操作客户端的字段。 你能解释一下你想用这些表格做什么吗?我不明白
答案 2 :(得分:-1)
1)您应该使用 jQuery (不要忘记包含此库 head 部分)。
$('#hide_name').click(function() {
$('#first_name').hide('slow', function() {
});
});
First Name: <input type="text" id="first_name" /> <a href="#" id="hide_name" /> Hide name </a>
2)或下一步:
if ($_SESSION['login']) {
$visible = "visibility: visible;";
}
else {
$visible = "visibility: hidden;";
}
First Name: <input type="text" style=<?php echo $visible; ?> />
3)或最简单的方式:
if ($_SESSION['login']) {
First Name: <input type="text" id="first_name" />
}
答案 3 :(得分:-1)
您需要存储某种类型的数据,这些数据定义了用户看到的内容或他们不看的内容。根据您的数据挑选任何直观的东西。一旦您知道用户已登录,请获取有关显示用户的数据。您可以基于此创建一个布尔值数组,我们称之为form_fields []。然后使用PHP输出表单,并根据这些数据确定要显示的部分,可能是这样的:
$form = "<form>\n";
if(form_fields['first_name'])
{
$form .= 'First Name: <input id="first_name" />';
}
if(form_fields['last_name'])
{
$form .= 'Last Name: <input id="last_name" />';
}
if(form_fields['phone'])
{
$form .= 'Phone Number: <input id="phone_number" />';
}
if(form_fields['city'])
{
$form .= 'City: <input id="city" />';
}
$form .= "</form>";
请记住,验证您的数据也会变得更加复杂 - 您的表单处理脚本还需要知道它所查找的字段。