0

我有一个数据库表:

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">

最后一列有一个复选框。如果选中此复选框,当我单击 时send_mail_button,我想向选中复选框的每封电子邮件发送一封邮件:对我来说,如果这将通过AJAX使用form post.

我可以这样做:

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

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

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

我该怎么做?

4

3 回答 3

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 语句单独遍历每个复选框。

于 2013-08-30T12:32:57.760 回答
1

你的意思是这样的:

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

foreach($_POST['emails'] as $email)
{
    $getid = explode('_', $email);
    $email_id = $getid[1];
    // dsth
}
于 2013-08-30T12:35:08.350 回答
1

为什么不使用

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

然后在你的搜索中这样做:

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

在旁注中,当在公共环境中使用时,这是一种不好的做法,因为它不进行任何检查,并且允许用户在您的脚本中注入电子邮件地址。

另一种解决方案是:

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

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

$query = "SELECT * FROM emails WHERE ID IN (".mysql_real_escape_string(implode(",",$_POST['mail'])).")";
于 2013-08-30T12:37:09.783 回答