带复选框的表:将邮件发送给已检查的邮件

时间:2013-08-30 12:27:11

标签: php ajax arrays

我有一个数据库tabe:

ID    email

我从数据库中调用此数据并将其发布到html table

<?php
  $sql = $link->query("SELECT ...");
  while($data = $sql->fetch_object){
?>

<table>
  <tr>
    <td>
      <?=$data->ID?>
    </td>
    <td>
      <?=$data->email?>
    </td>
    <td>
      <input type="checkbox" id="mail_<?=$data->ID?>">
    </td>
  </tr>
</table>

<?php
  }
?>

<input type="button" id="send_mail_button">

最后一列有一个复选框。如果选中此chechbox,当我点击send_mail_button时,我想发送邮件到每个选中该复选框的电子邮件:对我来说,如果这样做将会是相同的使用AJAX进行form post调用。

我可以这样做:

$subject = 'something';
$body = 'hello world!';

foreach($to as $t){
    mail($t, $subject, $body);
}

但我无法使用所有$to地址创建数组(email),然后使用foreach循环检索每封电子邮件,我会发送邮件。

我该怎么做?

3 个答案:

答案 0 :(得分:1)

我可能会对这个答案有所了解(我很长时间没有使用复选框),但我很确定你需要在复选框条目中使用name='zzzz'(不是id) ,其次,你需要为它输入一个值。

这样的事情:

<input type="checkbox" id="something" name="ids[]" value="<?php=$data->email?>">

然后在您的PHP代码中,您可以执行以下操作:

foreach ($_POST['ids'] as $thisID)
{
    // you now do what you need to do using the ID
}

这是因为复选框实际上是一个数组,您可以使用foreach语句单独逐步执行每个复选框。

答案 1 :(得分:1)

你的意思是这样的:

<input type="checkbox" name="emails[]" value="mail_<?=$data->ID?>">

foreach($_POST['emails'] as $email)
{
    $getid = explode('_', $email);
    $email_id = $getid[1];
    // dsth
}

答案 2 :(得分:1)

为什么不使用

<input type="checkbox" name="mail[]" value="<?=$data->email?>">

然后在你的专访中做到这一点:

foreach($_POST['to'] as $t){
    mail($t, $subject, $body);
}

在旁注中,当在公共envoirement上使用时,这是不好的做法,因为它不进行任何检查并使用户能够在您的脚本中注入电子邮件地址。

另一种解决方案是:

<input type="checkbox" name="mail[]" id="<?=$data->ID?>">

然后,在提交后运行另一个查询以检索所有相关的电子邮件地址:

$query = "SELECT * FROM emails WHERE ID IN (".mysql_real_escape_string(implode(",",$_POST['mail'])).")";