我正在使用表单构建器,用户可以创建多个复选框部分。 当只有一个部分时,检查的值会被正确发送。
如果有两个或更多不同的复选框部分,则发送的值会将之前选中的值附加到上一个复选框部分,如下所示:
复选框部分1 =测试1
复选框部分2 =测试1,空调
复选框部分3 =测试1,空调,第二个1
换句话说,第二个和第三个复选框不应包含先前的值。
我已经接近了,但是我们将非常感谢任何帮助。
以下是此HTML。你可以看到每个都有自己的数组:
HTML
Checkbox section 1
<input type="checkbox" name="txt5[]" value="test 1">test 1
<input type="checkbox" name="txt5[]" value="test 2">test 2
<input type="checkbox" name="txt5[]" value="test 3">test 3
<input type="checkbox" name="txt5[]" value="test 4">test 4
Checkbox section 2
<input type="checkbox" name="txt6[]" value="Air Conditioning">Air Conditioning
<input type="checkbox" name="txt6[]" value="Plumbing">Plumbing
<input type="checkbox" name="txt6[]" value="Mechanical">Mechanical
Checkbox section 3
<input type="checkbox" name="txt7[]" value="second 1">second 1
<input type="checkbox" name="txt7[]" value="second 2">second 2
<input type="checkbox" name="txt7[]" value="second 3">second 3
<input type="checkbox" name="txt7[]" value="second 4">second 4
PHP - 在下面的PHP代码部分中,您可以看到一个部分,它检查它是否是一个数组,然后循环遍历这些项目。问题是它没有删除先前数组中先前检查的项目:
$str_mail_cont="<html>
<head>
<title></title>
</head>
<body style=\"background-color:#f1f2f2; margin-top:10px;\">
<table align=\"center\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\" style=\"background-color:#FFFFFF; border-top: none; font-family:Verdana; line-height:20px; font-size:9pt\" bordercolor=\"#111111\" width=\"95%\" id=\"AutoNumber1\">
<tr>
<td colspan='2' align=left><U><b>".$form_title."</b></U></td>
</tr>";
while($result_fld = mysql_fetch_array($rs_flds))
{
$amm = 'txt'.$num;
$fld_name=$result_fld['field_name'];
$temp = $_POST[$amm];
if(is_array($temp) && count($temp)>=1)
{
$str_mail_filed="<tr><td align='left' width='30%'><b>".$fld_name." :</b></td><td align='left'>";
$str_mail_cont.=$str_mail_filed;
for($k=0;$k<count($temp);$k++)
{
$chkbox_str .= $temp[$k].', ';
}
$chkbox_str = trim($chkbox_str, ', ');
$str_mail_cont .= $chkbox_str;
$str_mail_cont.="</td>";
}
else
{
$str_mail_cont.="<tr><td><b>".$fld_name." :</b></td><td align='left'> ".$temp."</td></tr>";
}
$num++;
}
$str_mail_cont.="</table>
</body>
</html>";
}
最终结果是它发送了一封电子邮件:
Test Items : test 1
Reason(s) For Request : test 1Air Conditioning
More Tests : test 1Air Conditioningsecond 1
感谢您的帮助!
一些额外信息..这是var_dump($temp)
array(1) {
[0]=> string(6) "test 1"
}
array(1) {
[0]=> string(16) "Air Conditioning"
}
array(1) {
[0]=> string(8) "second 1"
}
答案 0 :(得分:0)
我想出来了。我只是在它循环每个复选框数组的部分上面添加了一个变量声明,如下所示:
$chkbox_str ='';
现在按预期工作!