显示所有表单字段名称,但不显示复选框和无线电字段

时间:2010-02-14 07:15:44

标签: php

我有一个充满文本字段,复选框和无线电字段的html表单。 我想得到这些字段的所有名称,以便我可以开始验证其中的信息。

我用来获取它们的方法是

if(isset($_POST['submit'])) {
    foreach($_POST as $name => $value) {
    print $name."<br/>";
    }
}

但我注意到它只显示文本框和textarea字段名称,并且它不包括通过此提交的复选框和无线电字段名称。我是否需要包含任何内容以获取其中的字段名称?

2 个答案:

答案 0 :(得分:2)

复选框和单选按钮与标准输入的工作方式略有不同。如果表单上存在复选框,并不一定意味着它将在生成的POST信息中可用。相反,如果实际标记了这些值,则这些值将是可用的(选中复选框并选择单选按钮)。在PHP中测试其值的正确方法不是检查字段值,而是首先检查isset()

对于复选框:

$data['my_checkbox'] = isset($_POST['my_checkbox']) ? 'on' : 'off';

和单选按钮:

$data['my_radio'] = isset($_POST['my_radio']) ? $_POST['my_radio'] : false;

为了更具描述性,让我们说你有以下形式:

<form action="test.php" method="post">
  <input type="text" name="email" value="" />
  <input type="checkbox" name="active" value="Yes" />
  <input type="submit" value="Submit" />
</form>

如果我要提交的电子邮件地址为“test@email.com”,但,请选中复选框,我会在$ _POST中提供以下内容:

Array (
  'email' => 'test@email.com'
)

但是,如果我使用相同的电子邮件地址提交相同的表单,请选中我将拥有以下内容的复选框:

Array (
  'email' => 'test@email.com',
  'active' => 'Yes'
)

希望有所帮助。

答案 1 :(得分:0)

0. /尝试使用以下代码查看原始发布数据:

echo '<pre>';
print_r($_POST);
echo '</pre>';

1. /确保为复选框和无线电输入使用名称属性值。

通常对于复选框,它将是一个数组。

<input type="checkbox" id"=fruit-apple" name="fruits[]" value="apple" />
<input type="checkbox" id="fruit-pear" name="fruits[]" value="pears" />

2. /确保它们位于form标记内。

3. /如果您使用javascript调用提交,请尝试禁用javascript并查看错误是否仍然存在。如果没有,你知道你的javascript是罪魁祸首。