我有一个从SQL数据库中获取的名称清单。当我选择多个复选框并按提交时,只发送一封电子邮件,而不是我检查的其他电子邮件。我已通过输入echo "$_POST['check']";
我在这里做错了什么?
<?php include('includes/config.php');
if(isset($_POST['check']) == true)
{
$subject = trim($_POST['subject']);
$message = trim($_POST['message']);
$from = 'noreply@email.com';
$reply = 'reply@email.com';
foreach($_POST['check'] as $key => $value)
{
// Set content-type for sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$headers .= "From: <".$from.">\r\n";
$headers .= "Reply-To: ".$reply."";
if(@mail($value,$subject,$message,$headers))
{
echo '<div class="container-fluid" style="width:50%;">
<div class="alert alert-success fade in">
<a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>';
echo '<strong>Success! </strong>';
echo ' Mail has been Successfully sent to '.$value.'</br>';
echo '</div></div>';
}
}
}
?>
<form method="post" action="">
<?php
// Retrieve Email from Database
$getemail = mysql_query("SELECT * FROM Email_Users");
if (!$getemail) die('MySQL Error: ' . mysql_error());
echo '<table class="table table-bordered">';
echo "<thead>
<tr>
<th><input type='checkbox' onchange='checkedbox(this)' name='chk'/></th>
<th>Username</th>
<th>Email</th>
</tr>
</thead>";
if (mysql_num_rows($getemail) == 0) {
echo "<tbody><tr><td colspan='3'>No Data Avaialble</td></tr></tbody>";
}
while ($row = mysql_fetch_assoc($getemail)) {
echo "<tbody><tr><td><input value='".$row['email']."' type='checkbox' name='check[]'/></td>";
echo "<td >".$row['username']."</td>";
echo "<td >".$row['email']."</td></tr></tbody>";
}
echo "</table>";
?>
<p>Email Subject:<input type="text" name="subject" value="" class="form-control"/></p>
<p>Email Content:<textarea name="message" cols="40" rows="6"></textarea></p>
<center><input type='submit' name='submit' value='Send Email Now' class="btn btn-primary btn-block"/>
</center>
答案 0 :(得分:0)
使用此jQuery代码获取复选框的数组。
var checkboxes = $('input[name="chk"]:checked').prop('value');
答案 1 :(得分:0)
您的大多数代码都在运行。我看到的唯一问题是你如何验证数组的内容。
要使用print_r函数使PHP数组成为人类可读的尝试,请执行以下操作:
$array = $_POST['check'];
echo '<pre>'.print_r( $array, true ).'</pre>';
我将此代码放在PhpFiddle中,在您提交表单后,它将显示已提交数组的人类可读版本。
如果您在发送电子邮件时仍然遇到问题,那么您的问题可能与您的表单发布多个复选框值有关。