动态隐藏表单字段

时间:2012-03-09 16:59:41

标签: php mysql forms input field

我有一个“用户个人资料”表单,其中包含以下字段:

<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>

我的问题是:实现这一目标的最佳方法是什么?我假设这些首选项需要由数据库驱动。任何输入都会很棒。

4 个答案:

答案 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>";

请记住,验证您的数据也会变得更加复杂 - 您的表单处理脚本还需要知道它所查找的字段。