使用php和mysql向多个用户发送消息

使用php和mysql向多个用户发送消息,php,html,mysql,Php,Html,Mysql,我需要帮助。我正在尝试向多个用户发送消息,或者您可能会呼叫收件人。到目前为止,下面的代码只能向一个收件人发送消息。我想使用一个常规的表单,其中用户名可以用逗号分隔,然后一条或多条消息可以发送给所有用户,同时存储在mysql数据库中。它是一个基于数据库的电子邮件系统,而不是发送到不同的电子邮件地址系统 我使用jquery在用户名字段中用逗号分隔用户名,但之后我就卡住了,下面的代码中没有包含简单的jquery,因为我不确定它是如何工作的 让我问一个更简单的问题,因为我不理解爆炸和每个。让我们假设我想

我需要帮助。我正在尝试向多个用户发送消息,或者您可能会呼叫收件人。到目前为止,下面的代码只能向一个收件人发送消息。我想使用一个常规的表单,其中用户名可以用逗号分隔,然后一条或多条消息可以发送给所有用户,同时存储在mysql数据库中。它是一个基于数据库的电子邮件系统,而不是发送到不同的电子邮件地址系统

我使用jquery在用户名字段中用逗号分隔用户名,但之后我就卡住了,下面的代码中没有包含简单的jquery,因为我不确定它是如何工作的

让我问一个更简单的问题,因为我不理解爆炸和每个。让我们假设我想使用id2作为收件人向多个成员发送消息,同时在消息、谁和什么字段中添加信息。我会怎么做我会怎么做

 mysql_query('insert into pm (id, id2, title,  who, what, user1, user2, message, timestamp, user1read,    user2read)values("'.$id.'", "1", "'.$title.'",   "'.$who.'",  "'.$what.'", "'.$_SESSION['id'].'", "'.$dn1['recipid'].'", "'.$message.'", "'.time().'", "yes", "no")')

尝试了此操作,但它仍然只向一个用户发送消息。

您需要同时使用explode和foreach:

$recipients = explode(',',$recip);
foreach ($recipients as $r) {
    //We check if the recipient exists
    $dn1 = mysql_fetch_array(mysql_query('select count(id) as recip, id as recipid, (select count(*) from pm) as npm from header where username="'.$r.'"'));
        if($dn1['recip']==1)

                 echo 'recip exists';



        else
        {
       //Otherwise, we say the recipient does not exists
       $error = 'The recipient does not exists.';

        }
}

您需要重新构建数据库,以允许向多个用户发送消息。没有别的办法了

一个ID字段不应用于存储多个收件人ID-您迟早会遇到问题(我想您已经遇到了:)

以下是我将如何构造您的表(我假设收件人和发件人都是您系统上的注册用户):

  • 消息表:消息ID、发件人ID、发送日期/时间、主题、消息、附件等
  • 邮件收件人表:邮件ID、收件人ID(仅限单个收件人!)、状态(即是否已读/未读)
您必须将每个收件人分别存储在“Message recipients”表中,并通过Message ID将其链接到“Message”表


希望这能有所帮助。

分解你正在使用的名称/电子邮件的逗号分隔列表,并简单地循环它们。我尝试过这样做,但没有发生任何事情,也没有数据进入。我也试着用了每个。也许我做错了。既然没用,我敢打赌那是对的。如果你把你尝试过的东西贴出来,我们可能会告诉你你做错了什么。此外,请尝试发布适当缩进的代码——给读者一个理解结构的机会。如果您只发布相关代码,您将有更好的机会得到一个好的答案。感谢所有尝试回答它的人;然而,不知道答案的人不应该把我的问题当作我说我知道答案一样否决。哦,谢谢。我没有尝试分解show if recipients exists查询,而是使用下面的msysql查询将其插入数据库。我仍然会为每个添加,并将每个id2添加为id2。假设mysql查询中的用户1和用户2仅用于读取部分。Id2代表接收信息的用户。我真的不需要包括支票收件人查询。对不起,我误读了。是的,如果您想运行存储在一个字段中并用逗号分隔的收件人循环,您仍然会使用explode和foreach。但是,您不需要使用这些方法来插入数据库,因为我假定您希望为每个发送的邮件添加一条记录,但收件人在id2字段中使用逗号分隔的值。但是,目前,我不知道您为什么要尝试使用jquery,因为它似乎对您的需求没有任何意义,我也不知道在您的explode函数中使用is之前,您在哪里为$id2赋值。是的,我想我是在分解错误的id,它应该是id不是id2。