0

我已经构建了非常简单的消息传递系统,它工作正常,但是我有一个小问题。在向表中插入新消息时,我将该消息与发送它的用户名相关联,并且当发送消息的用户删除该消息时,该消息也会从收件人中删除。

我希望仅从发件人中删除该消息。我更新表并首先设置消息,就像deleted = 'yes'在实际删除之前一样。有人可以提示我一个想法吗?

表结构

id、from_user、to_user、主题、消息、已删除、已发送、日期

$delete =$mysqli prepare("update messages set deleted = 'yes' where from_user = ?  and id = ? ");
$delete->bind_param('ss', $username->username, $id);
 foreach  ($_POST['id'] as $id) {
$delete->execute();

实际删除...

$stmt = $mysqli->prepare("DELETE  FROM messages where from_user = ?  and id = ?  or to_user = ? and id = ?");
$stmt->bind_param('ssss', $username->username, $id, $username->username, $id);
 foreach  ($_POST['id'] as $id) {
$stmt->execute();
4

2 回答 2

0

在与该消息关联的每个人都选择删除该消息(如果可以)之前,您无法删除该消息。如果他们不能,您将永远无法删除邮件,除非您根据其他一些标准将邮件老化。

如果是我,我可能会有 3 张桌子:

user(userid, etc.)
message(messageid, text, etc.)
message_user(userid, messageid, role, deleted, etc.)

role将是senderrecipientdeleted将是truefalse

但是这个基本想法——你需要将你的delete状态与用户+消息结合起来,而不仅仅是发送者或接收者。

于 2013-10-30T22:54:20.060 回答
0

简单的想法:p

需要的表:

信息

id, 内容, lastmodified_time

消息用户

id、UserId、MessageId、DeliveryType、已删除

IE:

信息:

1、测试留言,2013-10-31 00:00:00

消息用户

1, 11999, 1, '传出', 0

2, 12585, 1, '传入', 1

于 2013-10-30T22:57:28.583 回答