使用复选框以PHP发送电子邮件

问题描述:

如何从数据库中发送电子邮件?但是当点击复选框时允许用户勾选复选框,表明发送给所有人。我怎么会这些电子邮件存储在复选框,如何将我把它们传递的邮件功能使用复选框以PHP发送电子邮件

<?php 
    $query="SELECT emails FROM users"; 
    $result=mysqli_query($db,$query); 
    while($email=mysqli_fetch_assoc($result)){ 
     $email=$email['student_email']; 
    } 
?> 
    <input type ="checkbox " name="$email[]" value="" /> 

我怎么能使用复选框内这个$电子邮件,让所有的电子邮件将被储存在那里?还是有不同的方式来做到这一点? 谢谢你们

+0

您正在混合使用PHP和HTML代码,您应该在''中包含您的PHP。 – aularon 2014-09-30 08:37:01

+1

不要像这样混合使用数据库访问和HTML代。分开他们。诸如Symfony和Flow之类的MVC框架将为您提供帮助。 – adhominem 2014-09-30 08:42:26

+0

首先,编写一个代码打印检查邮件的电子邮件。其次,编写代码发送电子邮件从PHP。第三,把这两样东西放在一起 – 2014-09-30 08:46:29

我只是归你的代码,并添加所需功能的电子邮件:

<?php 
$query = "SELECT emails FROM users"; 
$result = mysqli_query($db, $query); 

while ($email = mysqli_fetch_assoc($result)) { 
    echo '<input type="checkbox" name="mails[]" value="' . $email['student_email'] . '" />', PHP_EOL; 
} 

提交后:

<?php 
foreach ($_REQUEST['mails'] as $studentMail) { 
    echo $studentMail . '<br>', PHP_EOL; 
} 

更新:

我错过了你的问题。

如果你想将邮件发送给所有用户,您woulnd't放在邮件都:

<input type="checkbox" name="send-to-all" value="yes"> 

然后提交后:

<?php 
if (isset($_REQUEST['send-to-all']) && $_REQUEST['send-to-all'] == 'yes') { 
    $query = "SELECT emails FROM users"; 
    $result = mysqli_query($db,$query); 
    while ($email = mysqli_fetch_assoc($result)) { 
     // send email here or gather array to send a single mail to all 
    } 
} 

如果你想包括组,我会做这种方式:

<input type="hidden" name="groups" value="<?php echo json_encode($groups); ?>" /> 
+1

'name =“邮件[]”'如果你想要它是一个数组... – FrancescoMM 2014-09-30 08:37:45

+0

工作很好谢谢。但我只想显示一个复选框,并在其时显示所有电子邮件的复选框 – 2014-09-30 08:38:59

+0

@FrancescoMM应该使用数组吗?因为它必须发送给整个团队,而不仅仅是一个 – 2014-09-30 08:39:52

while($email=mysqli_fetch_assoc($result)){ 
    $email=$email['student_email']; 
    echo '<input type ="checkbox " name="$email" />'; 
} 

,然后提交表单到foreaches岗位价值和邮件页面中的所有

您可以像:

<?php 
    $result = mysqli_query($db, 'SELECT id, student_email FROM users'); 
    if(isset($_POST['submit'])){ 
     while($row = mysqli_fetch_array($result)){ 
      var_dump($_POST['email-' . $row['id']]); 
      if($_POST['email-' . $row['id']]){ 
       //Send 
      }else{ 
       //Not send 
      } 
     } 
    } 
?> 
<form method="post"> 
    <?php while($row = mysqli_fetch_array($result)):?> 
    <input type="checkbox" name="email-<?=$row['id']?>" value="" /> 
    <?php endwhile;?> 
    <input type="submit" name="submit" /> 
</form> 
+0

OP使用'mysqli_'而不是'mysql_' – 2014-09-30 08:44:01

+0

我使用PDO,这是演示 – 2014-09-30 08:45:03

+0

不要给伪代码,它不是OP使用的API。 – 2014-09-30 08:46:15

正如我所看到的,您希望通过单个复选框发送电子邮件。首先,不要忘记将您的输入包装到<form id="..." method="..." action="...">...</form>标签组中。您不必将返回的mysql结果作为名称属性传递给输入,因为如果您选中该复选框,然后提交表单,则必须执行一件事:发送电子邮件。所以我只会将输入的名称设置为“发送”。之后,你可以检查你的php代码:

<?php 
    //I assume, that you used post method 
    if($_POST['send']){ 
    foreach($email as $mail){ 
     mail($mail, $subject, $msg); 
    } 
    } 
?> 

我希望它可以帮助你。