【问题标题】:Jquery+PHP form - Multiple recipients based on checkbox selectionJquery+PHP 表单 - 基于复选框选择的多个收件人
【发布时间】:2012-01-20 16:45:08
【问题描述】:

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

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


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

名称
电子邮件
评论


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

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

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

【问题讨论】:

    标签: php jquery forms checkbox


    【解决方案1】:

    你可以简单地检查你得到的值是否为真:

    基本思路:

    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
    

    等等

    【讨论】:

      【解决方案2】:

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

      在基本术语中,它会将一个数组发布回 php 脚本,然后您可以对其进行解析,并根据勾选的内容/传回的变量,您可以将更多电子邮件地址附加到邮件功能的“收件人”部分。

      为了更简单的实现,您可以将三个复选框分开而不是放在一个数组中,然后通过 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】:

        将您的元素命名为这样的数组:

        <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
        

        【讨论】:

        • 请注意,我知道这超出了问答的范围,但您必须确保清理所有帖子变量,以防止您的表单被垃圾邮件发送者劫持。
        【解决方案4】:

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

        <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 />";
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-13
          • 2019-02-03
          • 2012-10-04
          • 2013-11-17
          • 2011-11-06
          • 1970-01-01
          相关资源
          最近更新 更多