用PHP通过电子邮件发送表单复选框值
问题描述:
我查看过并发现了几个类似的问题,但似乎无法使解决方案适用于我。如果有人能指出我错过的事情会很棒。用PHP通过电子邮件发送表单复选框值
基本上,我有一个窗体和PHP,检查,看看字段已填写,然后验证它们。然后我给他们发邮件。我有一切工作,除了它只发送最后一次检查的值,而不是所有的邮件。我相信我的问题是当我将数组添加到电子邮件正文中时。这里是我的那部分代码:
if (function_exists('htmlspecialchars_decode')) $message[2] = htmlspecialchars_decode($message[2], ENT_QUOTES);
$body = "$name[0]: $name[2]\r\n\r\n";
$body .= "$email[0]: $email[2]\r\n\r\n";
$body .= "$phone[0]: $phone[2]\r\n\r\n";
$body .= "$service: $service\n";
$body .= "$message[0]:\r\n$message[2]\r\n";
if (!$from) $from_value = $email[2];
else $from_value = $from;
require_once('formfiles2/class.phpmailer.php');
$mail = new PHPMailer();
$mail->SetFrom($from_value);
$mail->AddReplyTo($email[2]);
$mail->Subject = "$subject";
$mail->Body = $body;
$mail->AddAddress($to);
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
}
我已经试过这还有:
$body .= "Service" .(is_array($_REQUEST['service']) ? implode("\n",$_REQUEST['service']) : $_REQUEST['service']);
这里的形式的那部分:
<form method="post" class="cForm" action="#cform">
.....
<tr>
<td>
<input type="checkbox" name="service" value="sweeping" /> Sweeping<br />
<input type="checkbox" name="service" value="litter" /> Litter Maintenance<br />
<input type="checkbox" name="service" value="snow" /> Snow Removal<br />
<input type="checkbox" name="service" value="wash" /> Power Washing<br />
</td>
<td>
<input type="checkbox" name="service" value="striping" /> Parking Lot Re-Striping<br />
<input type="checkbox" name="service" value="concrete" /> Asphalt/Concrete Work<br />
<input type="checkbox" name="service" value="lawn" /> Lawn Care<br />
</td>
<tr>
....
</form>
所以,我觉得我只是在我的语法中缺少一些将数组添加到主体的语法。让我知道!预先感谢任何帮助!
答
您不能有多个同名的复选框。这将表现得像选择选项。多个选中的值将会相互覆盖。
您应该将条目适应这样的:(。不需要成为联想一个简单的services[]
就已经这样做只是看起来更好和更明确的)
<input type="checkbox" name="service[stripping]" value="striping" /> Parking Lot Re-Striping<br />
<input type="checkbox" name="service[concrete]" value="concrete" /> Asphalt/Concrete Work<br />
<input type="checkbox" name="service[lawn]" value="lawn" /> Lawn Care<br />
然后再将输入阵列合并到文本列表中:
$service = join(", ", $_REQUEST["service"]);
+0
真棒,谢谢!我看着我的PHP非常努力,我完全忽略了这一点。 –
答
将复选框名称更改为数组,例如
<input type="checkbox" name="service[]" value="sweeping" /> Sweeping
答
如果您对输入类型相同的名字,你有数组的数组添加的名称,如name="service[]"
答
或命名复选框没有索引:service[]
那么你可以
if (isset($_POST['service'])) {
foreach ($_POST['service'] as $key => $val) {
// do what you need
}
}
[Multiple Checkbox Values not showing](可能存在多个复选框值)(http://*.com/questions/8126593/multiple-checkbox-values-not-showing) – mario