如果相同的变量合并内容(电子邮件)

时间:2015-07-20 13:20:47

标签: php

我有以下代码来选择事件,用户和子用户,并在子用户创建新事件时向用户发送电子邮件。

$result_m = mysqli_query($db, $query_mail) or die(mysqli_error());

while ($re4 = mysqli_fetch_array($result_m, MYSQLI_ASSOC))
    {
    $ajdi = $re4["pid"];
    $name1 = $re4["name"];
    $surname1 = $re4["surname"];
    $email1 = $re4["email"];
    $mob = $re4["mob"];
    $titl1 = $re4["title"];
    $zip1 = $re4["zip"];
    $city1 = $re4["city"];
    $address1 = $re4["address"];
    $insurance1 = $re4["insurance"];
    $born1 = $re4["born"];
    $receiver = $re4["demail"];
    $content= "<p><img src='$logo'></p>";
    $content.= "<p><br/>Name: $name1 $surname1, Born: $born1, Insurance: $insurance1<br/>$address1, $city1 $zip1, Tel: $mob, Email: $email1</p>";
    $title= "Mail title";
    $content.= "<p>Footer message</p>";
    $headers = array();
    $headers[] = "MIME-Version: 1.0";
    $headers[] = "Content-type: text/html; charset=utf-8";
    $headers[] = "From: no-reply@test.com";
    if ($receiver!= "")
        {
        mail($receiver, $title, $content, implode("\r\n", $headers));
        }
    }

这也包含在另一个获取所有事件的while循环中。 当用户创建事件时,此用户会收到电子邮件,但如果有更多事件,则会收到每个事件的电子邮件。 如何向用户发送一封包含所有已创建事件的电子邮件?

例如,当我echo "$receiver<br>$content<br>";时,我得到:

email@email.com
Some content
email@email.com
Some content2
email2@email.com
Some content
email2@email.com
Some content2

但我需要这样:

email@email.com
Some content
Some content2
email2@email.com
Some content
Some content2

如何实现这一目标?谢谢

UPDATE(根据Erwin Moller回答的数组)

Array
(
    [mail1@email.com] => 
22.07.2015., 08:30 Uhr
)
Array
(
    [mail1@email.com] => 
23.07.2015., 08:15 Uhr
)
Array
(
    [mail1@email.com] => 
09.09.2015., 14:45 Uhr
)
Array
(
    [mail1@email.com] => 
03.08.2015., 14:40 Uhr
)
Array
(
    [mail1@email.com] => 
03.08.2015., 11:40 Uhr
)
Array
(
    [mail1@email.com] => 
03.08.2015., 14:20 Uhr
)
Array
(
    [mail2@email.com] => 
30.07.2015., 15:40 Uhr
)
Array
(
    [mail2@email.com] => 
24.07.2015., 14:00 Uhr
)
Array
(
    [mail3@email.com] => 
24.07.2015., 14:00 Uhr
)
Array
(
    [mail3@email.com] => 
30.07.2015., 15:40 Uhr
)

2 个答案:

答案 0 :(得分:2)

您可以通过几种方式解决此问题。

一个简单的方法是: 不要发送电子邮件,但首先将它们全部存储在一个数组中,使用电子邮件地址作为密钥。

这样的事情:

{{1}}

答案 1 :(得分:0)

我认为您的问题可以通过以下方式解决 在您的选择查询中添加GROUP BY并合并所有内容
SELECT email,"Merged Content" FROM your_table_name GROUP BY email
注意: - 此合并内容您必须根据您的要求进行格式化

然后只是遍历查询结果并发送电子邮件&#39; s