【问题标题】:php foreach with html or css checkphp foreach 与 html 或 css 检查
【发布时间】:2013-06-18 20:31:06
【问题描述】:

我想检查一下 PHP FOREACH 函数,如下所示:

if (isset($_POST['name'])) {
        foreach ($_POST['name'] as disabled="true") {
            //do something
        }
    }

Disabled=true 来自我在提交时保存的复选框输入。我的问题是:我可以检查 POST,foreach 已禁用 =“true”的复选框。或者以某种方式仅在条件满足时才做某事?

【问题讨论】:

  • 如果 ($_POST['name'] 仅包含一个值,则不需要 foreach 语句。您可以在 IF 条件中添加额外的检查,如下所示: if (isset( $_POST['name']) && isset($_POST['checkbox_name'])) { // 做事 }
  • 如果框不可编辑,为什么需要禁用它?为什么不是隐藏值?
  • 如果该框被禁用,我希望它不被计算在内
  • 您可能不得不重新考虑代码未选中和禁用将是相同的。您可能必须将禁用复选框放入数组中,然后放入隐藏值中。除非你不希望 unchecked 也被计算在内
  • 是的,也许我应该把它们放在一个数组中,不应该计算未选中的框。一个复选框应该算一次。

标签: php html forms foreach


【解决方案1】:

禁用的字段不会发送到服务器 - 请改用readonly

另外我希望你明白foreach ($_POST['name'] as disabled="true")不是一个有效的php代码,你把它当作伪代码来使用。

【讨论】:

  • 是的,我知道这行不通,但我想要检查输入是否已为它们设置了 disabled="true",如果它们这样做了,我不会计算那个“名称”跨度>
【解决方案2】:

如果是这种情况,您不希望将未选中和禁用计数计算在内,那么这会更容易一些。

单次检查

if (isset($_POST['check2'])) 
{
     //do something
}

多重检查

$check_array=array('check1','check2','check3'); // check box names

    foreach ($check_array as $v) 
{

  if (isset($_POST[$v])) 
  {
     //do something
  }

}

<form action="" method="post">
<input name="check1" type="checkbox" disabled value="check1" checked="checked" />
<input name="check2" type="checkbox" value="check2" checked="checked" />
<input name="check3" type="checkbox" value="check3" />
<input name="" type="submit" />
</form>

【讨论】:

    【解决方案3】:

    禁用和未选中的复选框都不会发送到服务器,因此无法区分两者。

    您可以添加一些隐藏字段,并根据用户的操作使用 javascript 设置它们的值。

    注意readonly 不适用于复选框,例如Can HTML checkboxes be set to readonly?

    【讨论】:

      猜你喜欢
      • 2012-02-25
      • 2015-12-05
      • 2018-03-30
      • 2021-09-20
      • 1970-01-01
      • 1970-01-01
      • 2021-01-13
      • 2016-02-17
      • 2020-08-06
      相关资源
      最近更新 更多