2

在使用 PHP 和 MySQL 构建的私人消息系统中,用户可以编写新消息并回复消息。有两个按钮:“发送”和“保存”。消息状态存储在数据库中(0=尚未发送,1=已发送)。此外,消息会通过 ajax 调用每 3 分钟自动保存一次。

发送的消息和草稿都存储在数据库的同一个表中。现在,你什么时候做INSERT INTO messages ...

如果用户点击撰写新消息或回答?如何清除所有未发送的消息,如果用户不发送消息,关闭窗口,按下返回按钮?

你会建议什么其他选择?

4

2 回答 2

2

自动保存的消息不显示为草稿版本吗?然后他们会自己清理大部分

根据要求回答;)

于 2012-07-16T09:27:52.503 回答
0

当用户单击“撰写消息”时,我会插入一条状态为“待处理”的新消息。例如,您可以删除一天内不活动的所有“待处理”消息。

当用户忙于处理该特定消息时,例如 1 分钟,您将消息保存为“概念”,以便用户稍后离开页面时查看。我永远不会删除概念并让用户自己这样做。

当用户单击“保存”(而不是“发送”)时,您也会为消息提供“概念”状态(如果之前没有的话)。

消息发送后,您将其设置为“已发送”状态。但是在以这种方式开发消息系统之前,您需要考虑一些事情:

问自己一个问题:什么消息?消息是否具有自身的状态?该状态适用于谁?一条已读消息的状态可以是“已读”,但如果您将消息发送给多个收件人怎么办?当所有收件人都阅读时,您是否更改状态?不是很方便。

我建议您稍微更改您的数据库模型,以启用多个收件人。您将标题、正文等保存在一条记录中,并为每个持有邮件状态的收件人添加新记录(在不同的表中)。发件人一个,每个收件人一个。通过这种方式,您可以单独操作每个收件人的邮件状态,并且您可以通过查看所有这些记录来计算整体邮件状态。(10 个收件人中有 5 个已阅读您的消息)。

于 2012-07-16T09:03:12.617 回答