【问题标题】:displaying all form field names but checkbox's and radios fields dont show显示所有表单字段名称,但不显示复选框和单选字段
【发布时间】:2010-02-14 07:15:43
【问题描述】:

我有一个充满文本字段、复选框和单选字段的 html 表单。 我想获取所有字段的名称,以便我可以开始验证其中的信息。

我用来获取它们的方法是

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

但我注意到它仅显示文本框和文本区域字段名称,并且通过此提交不包括复选框和单选字段名称。我是否需要包含任何内容才能获取这些字段名称?

【问题讨论】:

  • 它的巨大让我看到我把它放到网上
  • 为什么投反对票?这是一个有效的问题。请在投票时发表评论,让 OP 知道您的问题。

标签: php


【解决方案1】:

复选框和单选按钮的工作方式与您的标准输入略有不同。如果表单上存在复选框,并不一定意味着它会在生成的 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'
)

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    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 是罪魁祸首。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多