[英]How to I get multiple groups of checkbox values in php form processor?
环顾四周,却找不到解决方案。 每个人都这样谈论一组:
<input type="checkbox" value="red" name="colors[]"> red<br />
<input type="checkbox" value="purple" name="colors[]"> purple<br>
<input type="checkbox" value="blue" name="colors[]"> blue<br>
<input type="checkbox" value="black" name="colors[]"> black<br>
但我需要像这样的单一形式做多个小组:
<input type="checkbox" value="red" name="colors[]"> red<br />
<input type="checkbox" value="purple" name="colors[]"> purple<br>
<input type="checkbox" value="blue" name="colors[]"> blue<br>
<input type="checkbox" value="black" name="colors[]"> black<br>
<input type="checkbox" value="sm" name="sizes[]"> small<br />
<input type="checkbox" value="med" name="sizes[]"> medium<br>
<input type="checkbox" value="lrg" name="sizes[]"> large<br>
<input type="checkbox" value="xlrg" name="sizes[]"> x-large<br>
最重要的是,表格是动态的。 名称是可变的并且是未知的,因此在php邮政编码中,它不能是$ _POST ['colors']。
我有这个代码段,可以抓取所有未知的名称,并生成一条消息,供以后插入到电子邮件脚本中,以便通过电子邮件发送提交的表单的值:
foreach ($_POST as $field=>$value) {
if ($field != "submit") $msg .= $field . ": " . $value . "\n";
}
但是您可能知道,当涉及到一组复选框时,它表示该值为“数组”,因此,不仅需要将数组拆分或内含为复选框的多个值,然后还需要对多个复选框执行此操作复选框组。
因此,例如,这可能是$ msg在特定表单上的形式:
first_name: first
last_name: last
email_address: email@email.com
phone: 1234567890
variable_radio_name: answer
variable_selectbox_name: answer
colors_from_checkbox_group_one: red,blue
sizes_from_checkbox_group_two: med,lrg
variable_textarea_name: blah blah blah
文本框,文本区域,收音机,下拉框都很容易,因为它是一个答案,但是这些复选框很麻烦。
编辑
是这样的:
if ($field != "submit") $msg .= $field . ": " . is_array($value) ? implode(',', $value) . "\n" ? $value . "\n";
像这样:
if ($field != "submit") {
$msg .= $field . ": " . is_array($value) ? implode(',', $value) . "\n" ? $value . "\n";
}
两种语法都出错。
您的语法错误是在使用?
两次,而不是:
用于三元组的发送部分。 此外,还需要括号以使串联正常工作:
$msg .= $field . " : " . (is_array($value) ? implode(',', $value) . "\n" : $value . "\n");
这可能更具可读性:
if ($field != "submit") {
if(is_array($value)) {
$msg[] = "$field : " . implode(',', $value);
} else {
$msg[] = "$field : $value";
}
}
$msg = implode("\n", $msg);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.