PHP 复选框表单收到内爆警告


PHP Checkbox Form getting Implode Warnings

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

使用我将在下面附加的此表格,我在浏览器顶部收到此警告/错误:

注意:未定义的索引:checkbox_group_1/home/adk819/public_html/DummyWebs/DCC2/send_form_email.php 第 25
行 警告: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/我已经寻求他们的帮助 - 但到目前为止还没有修复:(。

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

尝试在 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 是不高兴的,因为它需要一个数组。

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

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

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

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

此示例使用 PHP 的empty()和三元运算符:

$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";