即使检查了更多,PHP复选框列表也只发送一个值

时间:2016-07-02 17:07:43

标签: php html

我有一个从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">&times;</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>

2 个答案:

答案 0 :(得分:0)

使用此jQuery代码获取复选框的数组。

var checkboxes = $('input[name="chk"]:checked').prop('value');

答案 1 :(得分:0)

Working PhpFiddle

您的大多数代码都在运行。我看到的唯一问题是你如何验证数组的内容。

人类可读的PHP数组

要使用print_r函数使PHP数组成为人类可读的尝试,请执行以下操作:

$array = $_POST['check'];
echo '<pre>'.print_r( $array, true ).'</pre>';

我将此代码放在PhpFiddle中,在您提交表单后,它将显示已提交数组的人类可读版本。

如果您在发送电子邮件时仍然遇到问题,那么您的问题可能与您的表单发布多个复选框值有关。