3

我目前坚持我的逻辑。

我为 snedimg 消息创建了一个数据库表

messages看起来像这样

id | sender_id | reciver_id | msg                      | send_date |
1  | 2         |  6         | hello there i am testing | 2013-01-15 

所以我完全坚持的是删除消息逻辑。我不明白如何解决的问题是,让我们说user获取id 6消息,并通过 id 将其删除,这样发送消息的人也无法看到它。

所以我对此有点迷茫,如果有人能给我一个关于逻辑的提示,我真的会很高兴

编辑更多解释的细节

所以问题是

id | sender_id | reciver_id | msg                      | send_date |
1  | 2         |  6         | hello there i am testing | 2013-01-15 

这是桌子。用户收到消息,阅读它,并出于某种原因想要删除它。

问题是DELETE LOGIC,我知道如何删除行,我不知道如何解决问题,如果接收方删除消息,发件人将能够在他/她删除它时看到它。

例如在 facebook 他们使用存档而不是删除,这是我不明白的逻辑

4

2 回答 2

3

只需在删除时将接收者或发送者 id 设置为 -1,然后检查两者是否为 -1(或将是 -1)删除该行。

例如

on deletion by reciver:
if ($sender_id == -1) {
  $query = "DELETE FROM messages WHERE id=$id";
} else {
  $query = mysql_query("UPDATE messages SET reciver_id=-1 WHERE id=$id";
}
mysql_query($query)

这样它仍然可用,直到两者都删除它

编辑:
正如对该解决方案的额外考虑:
您可以将两者都设置为 -1 而不是在第二次删除用户时将其删除,这样您就可以获得一种存档并通过 cronjob 删除太旧的存档。

于 2013-02-02T15:41:13.590 回答
1

如果您想sender在被 删除后看到该消息receiver,您可以使用以下逻辑:

  1. 向您的表中添加一个名为 的新列deleted,其中 values1表示该消息已被删除,并且0表示它尚未删除。
  2. 如果这是receiver尝试查看他们的消息:WHERE deleted = 0
  3. 如果这是sender简单的展示全部;不要使用上述WHERE条款。
  4. 要删除消息,请在您的 PHP 删除函数中首先检查 的值deleted,如果是,1您可以使用 SQL 从表中永久删除该行DELETE。否则,您只需要将deleted列的值更新为1
于 2013-02-02T15:37:52.763 回答