2013-02-02 49 views
1

我目前坚持我的逻辑。mysql数据库逻辑消息和删除消息

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

messages看起来像这样

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

那么我完全套牢是移除该消息的逻辑。 这个问题我不明白如何解决是,让我们说userid 6得到的消息,并通过ID删除它,这样谁发送消息将无法看到它。

所以我有点在此丢失,如果有人可以给我一个提示上的逻辑我会很乐意与其它方式的说明细节

EDIT所以问题是

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

该消息应该被复制,添加列类型= ENUM('sent','received') – 2013-02-02 15:30:43

+1

如何添加两列'active_for_sender'和'active_for_reciver',然后为活动添加一个非零值,不活跃或“删除” – Cjueden

+0

对我而言不够明确。为什么你想删除该消息? –

回答

2

只需设置reciver或发件人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删除了旧的。

1

,如果你想sender看到它是由receiver删除后也会消息,您可以使用以下逻辑:

  1. 添加一个新列到你的餐桌命名为deleted,其中值1意味着信息已被删除,并0意味着它没有被删除。
  2. 如果是这样的receiver尝试看看他们的消息:WHERE deleted = 0
  3. 如果是这样的sender简单地显示所有;不要使用上面的WHERE条款。
  4. 用于删除邮件,在您的PHP删除函数中首先检查deleted的值,如果是1,您可以使用SQL DELETE从您的表中永久删除该行。否则,你只需要deleted列的值更新为1