如何在邮件系统中处理删除? (答案不足)

时间:2018-10-17 10:43:13

标签: php jquery mysql

我的SQL表

  
      
  1. message_id
  2.   
  3. sender_id
  4.   
  5. receiver_id
  6.   
  7. 主题
  8.   
  9. 消息
  10.   
  11. 状态
  12.   

我为内部邮件系统创建了一个mysql数据库。

在我的数据库结构中,有一个消息表,其中每个消息都有发送者user_id和接收者user_id。任何用户的收件箱都可以根据其自身的id关系填充为message表中的receive_id。 我的问题是,当我尝试删除任何邮件时,最终发送者和接收者中的邮件都消失了。

问题:

还有其他替代解决方案,其中仅从执行删除操作的用户中删除邮件。

我的İnboxmy_id(1):

sender_id (2)--subject--message [Delete button](*deletion is done with message id*)
----------------------------------------

其他用户ID(2)发送框:

receiver_id(1)--subject--message
--------------
我在收件箱中列出的邮件的

sql代码

$id=$userRow["user_id"];
$stmt = $baglanti->prepare("SELECT * FROM messages WHERE receiver_id=$id ORDER BY message_id DESC  ");
$stmt->execute();

我以前的问题一直找不到答案,它们似乎容易出错,所以我重新打开了这个问题。

---请注意,正在发送消息的用户过多

我感谢所有用户的努力

我的语言不是英语,所以很抱歉如果我输入错误

3 个答案:

答案 0 :(得分:0)

在消息表中添加一个新的状态列(“ deleted_by”,或者您可以设置要说的内容),并且当某人执行删除操作时,只需更改值(0为默认值,如果由发件人删除则为1,如果为2而不是删除该行,而被该状态列的接收者删除,如果被两个都删除,则删除3。

答案 1 :(得分:0)

代替从表中删除消息行,您还可以将状态码字段输入表中

0-否 1个由发件人删除 2被收件人删除

答案 2 :(得分:0)

您可以在表中再添加两个字段以获取删除状态:

  1. deleted_for_sender,default(0) or NULL
  2. deleted_for_receiver,default(0) or NULL

发件人删除邮件时,请设置deleted_for_sender = 1,或者当收件人删除邮件时,请更改状态deleted_for_receiver = 1

现在,当您想要接收者的消息列表时,请尝试以下示例:

$id=$userRow["user_id"];
$stmt = $baglanti->prepare("SELECT * FROM messages WHERE receiver_id=$id AND deleted_for_receiver != 1 ORDER BY message_id DESC  ");
$stmt->execute();
foreach ($stmt as $row) {
// do something with $row
}

发件人的邮件列表如下:

$id=$userRow["user_id"];
$stmt = $baglanti->prepare("SELECT * FROM messages WHERE sender_id=$id AND deleted_for_sender != 1 ORDER BY message_id DESC  ");
$stmt->execute();
foreach ($stmt as $row) {
// do something with $row
}