PHP复选框表格获得内爆警告

时间:2013-10-21 18:57:27

标签: php html forms checkbox implode

我是新来的,并试图在询问之前搜索现有的帖子,但是找不到一个对我有用的东西,这对于修复我的表格非常有用。 我还在学习这个 - 所以不确定我在表格中做错了什么。

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

  

注意:第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/ 我已经请求了他们的帮助 - 但尚未解决:(。

感谢大家给予我任何帮助! 玛丽〜

3 个答案:

答案 0 :(得分: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会因为期待一个数组而感到不快。

答案 1 :(得分:0)

未检查的复选框不会随表单一起提交。如果在特定组中选中了“否”复选框,则不会提交该组名称,最终导致checkbox_group_n未定义。你需要像

这样的东西
if (isset($_POST['checkbox_group_1'])) {
  implode...
}

答案 2 :(得分:0)

我建议在破坏它们之前检查$ _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";