我目前坚持自己的逻辑。
我为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删除它,发送消息的人也不会看到它。< / p>
所以我在这方面有点失落,如果有人能给我一个逻辑提示我真的很开心
使用更详细的详细信息进行编辑
所以问题是
id | sender_id | reciver_id | msg | send_date |
1 | 2 | 6 | hello there i am testing | 2013-01-15
这是表格。用户收听邮件,阅读邮件,并出于某种原因想要删除邮件。
Probmel是DELETE LOGIC
,我知道如何删除行,我不知道如何解决问题如果reciver删除邮件,发件人将能够在他/她删除时看到它它
例如在Facebook上他们使用存档而不是删除,这是我不理解的逻辑
答案 0 :(得分:2)
在删除时只需将reciver或发送者ID设置为-1,如果两者都为-1(或将为-1),则在之后进行检查。
e.g。
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删除过旧的存档。
答案 1 :(得分:1)
如果您希望sender
在receiver
删除邮件后看到该邮件,则可以使用以下逻辑:
deleted
的表格中添加新列,其中值1
表示邮件已被删除,0
表示尚未删除。receiver
尝试查看其消息:WHERE deleted = 0
sender
只显示全部;请勿使用上述WHERE
条款。deleted
的值,如果是1
,则可以使用SQL DELETE
从表中永久删除该行。否则,您只需将deleted
列的值更新为1