【问题标题】:Pass multiple checkbox values to PHP Mail将多个复选框值传递给 PHP Mail
【发布时间】:2021-12-29 18:13:41
【问题描述】:

我正在尝试将复选框值传递给 PHP,但兴趣字段显示为空白。我需要显示所有检查的兴趣值。并发出一封电子邮件。我已经包括了所有三个部分。所有其他字段均正常显示。

这是 HTML 部分

                            <form id="register-form" class="register-form register" action="php/register.php" method="post">
                                
                    
                                <input class="register-input name-input white-input" required="" name="register_names" placeholder="Full Name*" type="text">
                                
                                <input class="register-input name-email white-input" required="" name="register_phone" placeholder="Phone*" type="text">
                            
                                <input class="register-input name-email white-input" required="" name="register_email" placeholder="Email Adress*" type="email">
                                
                                <input class="register-input name-email white-input"  name="register_company" placeholder="Company" type="text">
                                
                                <table cellspacing="8" cellpadding="0">
                                    <tr>
                                        <td><input class="register-input name-email white-input" name="register_city" placeholder="City" type="text"></td>
                                        <td width="10">&nbsp;</td>
                                        <td><input class="register-input name-email white-input" name="register_zip" placeholder="Zip" type="text"></td>
                                    </tr>
                                </table>
                                
                                <table cellspacing="8" cellpadding="8">
                                    
                                    <tr><fieldset>
                                        <td>
                                            <input type="checkbox" name="interests[]" value="Practice" />&nbsp;&nbsp;Practice<br />
                                            <input type="checkbox" name="interests[]" value="Training" />&nbsp;&nbsp;Training<br />
                                            <input type="checkbox" name="interests[]" value="Workout" />&nbsp;&nbsp;Workout<br />
                                            
                                        </td>
                                        </fieldset>
                                    </tr>
                                    
                                </table>
                               
                                <input value="Submit Request" class="register-submit" type="submit">
                                    
                            </form>

这是用于验证的 JQuery 部分

    $('#register-form').each( function(){
        var form = $(this);
        //form.validate();
        form.submit(function(e) {
            if (!e.isDefaultPrevented()) {
                jQuery.post(this.action,{
                    'names':$('input[name="register_names"]').val(),
                    'email':$('input[name="register_email"]').val(),
                    'phone':$('input[name="register_phone"]').val(),
                    'company':$('input[name="register_company"]').val(),
                    'city':$('input[name="register_city"]').val(),
                    'zip':$('input[name="register_zip"]').val(),
                    'interests':$('checkbox[name="interests"]').val(),
                },function(data){
                    form.fadeOut('fast', function() {
                        $(this).siblings('p.register_success_box').show();
                    });
                });
                e.preventDefault();
            }
        });
    })

最后,这是生成电子邮件的 PHP 部分

<?php

$field_first_name = $_POST['names'];

$field_email = $_POST['email'];

$field_phone = $_POST['phone'];

$field_company = $_POST['company'];

$field_city = $_POST['city'];

$field_zip = $_POST['zip'];

$interests = (is_array($_POST['interests']) ? $_POST['interests'] : []);
$interests = (count($interests) > 0 ? implode(',', $interests) : 'none');


$mail_to = 'to@email.com';

$subject = 'Message from a landing page visitor '.$field_first_name;

$body_message = 'From: '.$field_first_name."\n";

$body_message .= 'E-mail: '.$field_email."\n";

$body_message .= 'Phone: '.$field_phone."\n";

$body_message .= 'Company: '.$field_company."\n";

$body_message .= 'City: '.$field_city."\n";

$body_message .= 'Zip: '.$field_zip."\n";

$body_message .= 'Interests:  '.trim($interests).' ';


$headers = 'From: '.$field_email."\r\n";

$headers .= 'Reply-To: '.$field_email."\r\n";

$mail_status = mail($mail_to, $subject, $body_message, $headers);


if ($mail_status) { ?>
    <script language="javascript" type="text/javascript">


----------


        window.location = 'index.html';
    </script>
<?php
}
else { ?>
    <script language="javascript" type="text/javascript">
        window.location = 'index.html';
    </script>
<?php
}
?>

【问题讨论】:

  • $('checkbox[name="interests"]').val() 在浏览器控制台中运行它会给你什么?
  • 没有显示空白。 “兴趣:”
  • 对不起。它读作“兴趣:无”
  • 我对此表示怀疑,因为您的电子邮件应该是这样的。再问:在浏览器控制台运行jQuery选择器返回给你什么?
  • 需要明确的是,您还没有 PHP Mailer 问题,您只有 jQuery/AJAX/form 问题,对吧?继续努力,通过 HTTP 到 PHP,暂时完全忽略电子邮件,只需记录和/或转储。此外,当你调试它时,你的淡入淡出可能会导致更多问题,你可能想暂时禁用它。

标签: php html jquery


【解决方案1】:

我在下面的php代码中发现了错误:

$interests = (is_array($_POST['interests']) ? $_POST['interests'] : []);

$interests = (count($interests) > 0 ? implode(',', $interests) : 'none');

如果你得到任何复选框值,它并没有直接带有数组格式,所以这就是这个条件不正确的原因。

你必须这样做:

$interests = $_POST['interests']!='' ? $_POST['interests'] : '');

$interests = ($interests!='' ? implode(',', $interests) : 'none');

【讨论】:

  • 看来可能。发帖前您没有阅读任何 cmets 吗?无论如何,答案并没有任何意义,即使那些 cmets 不在那里。永远不会发布空字符串,假设数据在客户端正确序列化(如果您阅读 cmets,实际上是 OP 代码中存在真正问题的地方)。
  • @Henry 感谢这个例子,即使它没有用。我感谢您的解释。
猜你喜欢
  • 2020-04-09
  • 2013-09-06
  • 2020-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 2022-01-23
相关资源
最近更新 更多