0

我已经设置了一个联系表格,并将其设置为通过电子邮件将回复发送到电子邮件帐户。表单的一部分是一系列复选框,我需要将它们作为列表显示在电子邮件中。这是我下面的代码,它目前返回“数组”而不是复选框的值。有什么建议么?

HTML:

<h3>Service required:</h3>
<input type="text" id="name" name="name" placeholder="Name" required />
<input type="email" id="email" name="email" placeholder="Email" required />
<input class="check-box styled" type="checkbox" name="service[]" value="Service / repairs" /><label> Service / repairs</label>
<input class="check-box styled" type="checkbox" name="service[]" value="MOT" /><label> MOT</label>
<input class="check-box styled" type="checkbox" name="service[]" value="Cars for sale" /><label> Cars for sale</label>

这是php:

<?php
    if (isset($_POST['service'])) {
    $service = $_POST['service'];
    // $service is an array of selected values
}
$formcontent= "From: $name \n Service(s) required: $service \n";
$recipient = "name@email.com";
$subject = "You have a new message from $name";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo "Thank You! We will get back to you as soon as we can.";
?>

谢谢,

杰森

4

4 回答 4

4

你应该将你的数组元素加入(例如用','内爆)到一个字符串。

<?php
$formcontent= "From: $name \n Service(s) required: ".implode(", " ,$service)." \n";
?>
于 2012-08-16T14:47:03.077 回答
1

由于在 中存储了几个复选框$_POST['service'],因此它本身就是一个数组,并且已经变成了二维的。它的不同索引可以像这样访问:$_POST['service'][0].

要对 做某事$_POST['service'],您可以使用 foreach 遍历所有索引:

foreach($_POST['service'] as $post){
    //Do stuff here
}

或者,使用implode()简单地连接所有索引。

于 2012-08-16T14:49:12.850 回答
1

为什么不循环遍历数组以将所需的结果转换为字符串?

if (isset($_POST['service'])) {
    $service = $_POST['service'];
    // $service is an array of selected values
    $service_string = "";
    for($i=0;$i<count($service);$i++)
    {
        if($i!=0)
        {
            $service_string = $service_string . ", ";
        }
        $service_string = $service_string . $service[$i];
    }
}

然后,您将获得每个勾选项目的逗号分隔列表的输出作为 $service_string。

于 2012-08-16T14:47:48.763 回答
0

您的输入类型 checkbix 必须具有唯一的名称。否则最后一个复选框将在 $_POST 中找到。或者您可以按照上面的讨论循环。将您的电子邮件设为 html 格式并将一串 html 写入 $formcontent。例如

$formcontent = "<html><head></head><body>";
$formcontent .= "<ul><li>".$_POST["checkbox1"]."</li>";
$formcontent .= "<li>".$_POST["checkbox2"]."</li>";
$formcontent .= "</ul></body></html>";

要以 html 格式编写电子邮件,请参阅 php 网站上的邮件功能。

于 2012-08-16T14:51:10.323 回答