【问题标题】:PHP foreach loop with checkboxes [closed]带有复选框的PHP foreach循环[关闭]
【发布时间】:2015-05-01 14:08:04
【问题描述】:

您好,我在一个表单中有许多复选框

<p>Select the modules you take:<br/>
Business <input type="checkbox" name="modules" value="Business"/><br />
Accounting <input type="checkbox" name="modules" value="Accounting"/><br />
Marketing <input type="checkbox" name="modules" value="Marketing" /><br />
</p>

我有一个响应页面并希望用户选择多个答案,那么我将如何使用 foreach 循环?我尝试了以下但没有希望

foreach($modules as $selected){
print "The modules were ".$modules;
}

提前致谢

【问题讨论】:

  • 这些花括号 是您实际代码的一部分吗?
  • @Fred-ii- 否 - 已编辑
  • 谢谢,我需要确定一下。许多人实际上将这些作为他们的实际报价,我们经常告诉他们这会引发/导致错误。
  • 你试过下面Stepashka的回答吗?另外,请确保您有带有 POST 方法的表单标签。
  • @Fred-ii- 我的表单很好,我只是想避免在名称末尾使用 []

标签: php loops foreach


【解决方案1】:

您的复选框的名称应以 [] 结尾。在这种情况下,它们会自动转换为 PHP 中的数组。

<p>Select the modules you take:<br/>
Business <input type="checkbox" name="modules[]" value="Business"/><br />
Accounting <input type="checkbox" name="modules[]" value="Accounting"/><br />
Marketing <input type="checkbox" name="modules[]" value="Marketing" /><br />
</p>

php代码:

echo "The modules were: "
foreach($_POST['modules'] as $selected) {
    echo $modules." ";
}

或者简单到

echo "The modules were: ".implode(", ", $_POST['modules']).".";

请注意,如果用户没有选择任何复选框 $_POST['modules'] 将是未定义的。您需要在使用前先检查一下。在使用前验证用户的输入也是一种很好的做法。

【讨论】:

  • 嗨,我的名字末尾没有方括号。没有他们我怎么办?
  • 你编辑你的代码并将它们添加进去。
  • @MariM 我想避免使用那种方法
  • 你为什么要避免@spymaster。这是唯一正确的方法。
  • 有一种低级的方法... @spymaster 您可以使用此建议 stackoverflow.com/questions/8945879/… 获取原始帖子数据并手动解析它。 Dat 将包含类似“... &modules=Business&modules=Accounting& ...”之类的内容,但我看不出有任何理由在这个简单的案例中有人想要这样做。
猜你喜欢
  • 1970-01-01
  • 2012-05-02
  • 1970-01-01
  • 2014-03-18
  • 2013-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-01
相关资源
最近更新 更多