【问题标题】:PHP $_POST array for unchecked checkboxes未选中复选框的 PHP $_POST 数组
【发布时间】:2011-05-12 21:04:30
【问题描述】:

如果我有一个带有两个复选框的表单,它们具有与名称属性相同的数组

name="1_1[]"

这些复选框都没有打勾,有什么方法可以知道它们出现在表单中吗?如果未选中这些字段,则不会通过 $_POST 数组发送它们。

我问这个是因为这些名称值是动态生成的,我并不总是知道它们是什么,我必须验证它们(确保至少选中两者之一)。

我是否必须开始使用隐藏字段来发送名称属性值,还是有更好的方法?

【问题讨论】:

  • 把它放在复选框上方: 编辑:忘记阅读最后一行。我实际上自己使用隐藏字段,我认为这是最简单的方法。否则,您应该在服务器端页面验证它是否设置了该字段。

标签: php


【解决方案1】:

如果您真的无法访问接收页面上的数据,如果您想继续使用复选框,则使用隐藏字段可能是最明智的方式。如果未选中,您将无法获得发送值的复选框,这就是它们的工作方式。

另一方面,接收页面不知道期望什么数据听起来很奇怪。你不能只重新获取相同的数据吗?

【讨论】:

  • 接收页面不知道需要什么数据,因为表单是动态构建的(alasurveymonkey),并且名称参数包含连接的数据库 ID。谢谢,我会使用隐藏字段。
  • @stef:您从哪里获得定义首先要显示哪些字段的数据?
  • 这是调查设计器应用程序的一部分,因此字段的参数存储在数据库中。
  • @stef: 你不能再次从数据库中获取参数,然后将它们与 POST 数据进行比较吗?
【解决方案2】:

它们不在 $_POST 数组中的事实意味着您可以使用isset() 来查看它们是否已设置。

如果您有两个复选框并且至少需要设置一个,您可以这样做:

$missingValue = TRUE;

if(isset($_POST['checkbox_foo'] || isset($_POST['checkbox_bar'])
{
    $missingValue = FALSE;
}

如果这还不够好,您将不得不使用隐藏字段。

【讨论】:

    猜你喜欢
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    • 2011-03-28
    相关资源
    最近更新 更多