[英]Pass multiple checkbox values to PHP Mail
我正在嘗試將復選框值傳遞給 PHP 但興趣字段顯示為空白。 我需要顯示所有檢查的興趣值。 並發出一個 email。 我已經包括了所有三個部分。 所有其他字段都正確顯示。
這是 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"> </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" /> Practice<br />
<input type="checkbox" name="interests[]" value="Training" /> Training<br />
<input type="checkbox" name="interests[]" value="Workout" /> 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();
}
});
})
最后,這是生成 email 的 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
}
?>
我在下面的 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');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.