【问题标题】:PHP Checkbox Form getting Implode WarningsPHP复选框表单获得内爆警告
【发布时间】:2013-10-21 18:57:26
【问题描述】:

我是新来的,并在询问之前尝试搜索现有帖子,但找不到适合我的帖子完全可以修复我的表单。 我还在学习这个 - 所以不确定我在表单中做错了什么。

我将在下面附上这个表格,我会在浏览器顶部收到此警告/错误:

注意:未定义索引:第 25 行 /home/adk819/public_html/DummyWebs/DCC2/send_form_email.php 中的 checkbox_group_1
警告:implode() [function.implode]:第 25 行 /home/adk819/public_html/DummyWebs/DCC2/send_form_email.php 中传递的参数无效

这是我的 html (只有错误是针对 - 它是一个相当大的表单:/):

<form class="formTemplate" method="POST" action="send_form_email.php">
<div>
<fieldset><!-- Wrap checkbox/radio button groups in fieldsets -->
<legend id="casetype">Case Type</legend>
<div>
<input type="checkbox" id="casetype_1" name="checkbox_group_1[]" value="Rackmount" />
<label for="casetype_1">Unknown</label>
</div>
<div>
<input type="checkbox" id="casetype_2" name="checkbox_group_1[]" value="Injection" />
<label for="casetype_2">Injection Molded</label>
</div>
<div>
<input type="checkbox" id="casetype_3" name="checkbox_group_1[]" value="Rotationally" />
<label for="casetype_3">Rotationally Molded</label>
</div>
<div>
<input type="checkbox" id="casetype_4" name="checkbox_group_1[]" value="Rackmount" />
<label for="casetype_4">Rack Mount</label>
</div>
</fieldset>
</div>
</form>

这是我的 php(用于上述区域):

$casetype = implode(' | ', $_POST['checkbox_group_1']);

// Construct email body

$email_message .= "Case Type: ". $casetype . "\r\n";

我在这里找到了制作表单这一部分的信息: http://webdesy.com/how-to-create-html-php-contact-form-radio-buttons-checkboxes-dropdown-menu/ 我已经寻求他们的帮助 - 但目前还没有修复:(。

感谢大家给我的任何帮助! 玛丽~

【问题讨论】:

  • 我收到上述警告/错误 - 如果没有复选框仅被选中。 (对不起 - 忘了提)

标签: php html forms checkbox implode


【解决方案1】:

尝试在issset中绑定你的代码,它只会在复选框变量存在时执行

if(is_array($_POST['checkbox_group_1']) && isset($_POST['checkbox_group_1']))
{
$casetype = implode(' | ', $_POST['checkbox_group_1']);

// Construct email body

$email_message .= "Case Type: ". $casetype . "\r\n";
}

该错误基本上是每当您的复选框未设置为数组时,因此当您尝试对其进行内爆时,PHP 不高兴,因为它需要一个数组。

【讨论】:

  • 感谢您的回答!下面的回复修复了它 - 虽然我不确定它与你的有什么不同;)。至于现在..它有效!再次感谢!
【解决方案2】:

未选中的复选框不会随表单一起提交。如果在特定组中没有选中任何复选框,则不会提交该组名,并且您最终会得到 checkbox_group_n 未定义。你需要类似的东西

if (isset($_POST['checkbox_group_1'])) {
  implode...
}

【讨论】:

  • 感谢您抽出宝贵时间回答 - 我看到了其他评论并先尝试了它,它成功了!!但再次感谢! :)
【解决方案3】:

我建议在爆破之前检查 $_POST 值。

如果没有选中特定组中的复选框,则该变量将不会被发布并且是未定义的。

这个例子使用了PHP的empty()ternary operators

$casetype = !empty($_POST['checkbox_group_1']) 
              ? implode(' | ', $_POST['checkbox_group_1'])
              : false;

编辑:

如果组中未选择任何选项,您也可以显示特定消息。
不要将缺失值设置为false,而是将它们设置为其他值:

$casetype = !empty($_POST['checkbox_group_1']) 
              ? implode(' | ', $_POST['checkbox_group_1'])
              : "n/a";

【讨论】:

  • 天哪!解决了它!祝福你,祝福你,祝福你!!!非常感谢您的宝贵时间!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-29
  • 2015-05-09
  • 2016-03-23
  • 2019-08-05
  • 1970-01-01
相关资源
最近更新 更多