Jquery + PHP表单 - 基于复选框选择的多个收件人

时间:2012-01-20 16:45:09

标签: php jquery forms checkbox

关于我的朋友,我问这个问题,所以我目前没有代码示例在这里发布。希望我足够清楚,有人可以提供帮助。

所以他有一个简单的联系表格,除了它有多个复选框,用户可以选择将他们的请求发送给多个收件人......就像这样......


x我想了解飞行学校的情况 x我有兴趣成为一名教师 x我希望有人就我的学位与我联系

名称
电子邮件
评论


因此,根据选中的复选框,它应该将该收件人添加到电子邮件功能中,以便他们收到用户的评论和兴趣。

表单由jquery验证并使用$ .ajax函数将Name,Email和Comments字段POST到process.php ...我们正在验证至少选中了一个复选框,但是,我们我们无法弄清楚如何将其布尔值传递给process.php,然后将相关的电子邮件地址添加到mail()函数中。

我确实意识到这是半模糊的而没有发布我们的代码,但我现在无法访问它...而且我一直在搜索谷歌大约30分钟,试图找到可以使用的东西。任何帮助,将不胜感激。感谢。

4 个答案:

答案 0 :(得分:0)

您只需检查您获得的值是否为真:

基本理念:

if(checkbox-1-ischecked)
    //send email to first recipent
end if
if(checkbox-2-ischecked)
    //send email to 2nd recipent
end if
if(checkbox-3-ischecked)
    //send email to 3rd recipent
end if
if(checkbox-4-ischecked)
    //send email to 4th recipent
end if

答案 1 :(得分:0)

将元素命名为如下数组:

<input type="checkbox" name="mybox[]" value="foo@example.com">Foo</input>
<input type="checkbox" name="mybox[]" value="bar@example.com">Bar</input>
<input type="checkbox" name="mybox[]" value="hello@example.com">Hello</input>
<input type="checkbox" name="mybox[]" value="world@example.com">World</input>

将表单发布到PHP后,$_POST['mybox']将是一个数组,其中包含已选中复选框的值。

在你的PHP中

if(isset($_POST['my_box']))
{
    $subject = "sub";
    $body = "body";
    if (is_array($_POST['mybox']))
    {
        //multiple items were selected.
        $to = implode(',',$_POST['my_box']);

        mail($to,$subject,$body);
    }
    else    //only one item was selected
    {
        echo $_POST['my_box'];
        $to = $_POST['my_box'];
        mail($to,$subject,$body);
    }
}
else
    //none were selected

答案 2 :(得分:0)

这似乎可以回答您的复选框查询。 (http://stackoverflow.com/questions/908708/how-to-pass-multiple-checkboxes-using-jquery-ajax-post)

在基本术语中,它会将一个数组发回到php脚本,然后你可以解析它,根据勾选的内容/传回的vars,你可以将更多的电子邮件地址附加到邮件功能的'to'部分。 / p>

为了更简单的实现,您可以将三个复选框分别保留在数组中,并将ajax单独发回。 HTML

<input type='checkbox' name='flight' value='1' id='flight' />
<input type='checkbox' name='teacher' value='1' id='teacher' />

然后只需在服务器上通过PHP

$to="";
if($_POST['teacher'] == 1) {$to = $to."joe@email.com,"};//append email
if($_POST['flight'] == 1) {$to = $to."bob@email.com,"};//append email
$to = rtrim($to, ","); //remove trailing comma

注意与所有网络邮件脚本一样,请确保您清理所有变种以防止滥用垃圾邮件!

答案 3 :(得分:0)

您可以简单地为所有复选框指定相同的名称,这实际上会产生一个复选框数组。

<form name="someform" onsubmit="return validate(this)" action="process.php" method="post">
    <input type="checkbox" name="names[]" value="Saji">Saji
    <input type="checkbox" name="names[]" value="Muhaimin">Muhaimin
    <input type="checkbox" name="names[]" value='Muhsin'>Muhsin
    <input type="submit" value="Submit">
    <input type="reset" value="Reset">
</form>

在process.php中,您可以 -

    $name_val=$_POST['names'];
    foreach($name_val as $values){
      //Here $values will contain only the values of the checkboxes you had selected.
      echo $values."<br />";
    }