2012-03-09 220 views
0

我有一个表格与以下字段的“用户配置文件”:动态隐藏表单域

<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

我会用标签包裹标签元素中的文本和输入字段。这不仅可以提高可访问性,还可以控制整个文本/输入以显示/隐藏。 – j08691 2012-03-09 17:08:26

回答

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

的,如果statment检查是否会话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

1)你应该使用jQuery的(不要忘了包括这个库部分)。

$('#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" /> 
} 
+0

这将离开文本,但隐藏表单域。 – j08691 2012-03-09 17:07:22

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

请记住,验证您的数据变得更加复杂太 - 你的表格处理脚本还需要知道它寻找什么领域。

+0

'form_fields [ 'FIRST_NAME']','form_fields [ '姓氏']',......插入'''好吗? – 2012-03-09 17:37:46

+0

谢谢你指出,我很感激。它是固定的。 – 2012-03-09 19:20:36

0

你可以在服务器端隐藏php文件内的dinamycally,或者尝试通过php为js设置变量,并在客户端通过javascript进行字段操作。 你能解释一下你想用这些表单做什么吗?我不明白