2012-07-16 87 views
2

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

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

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

您还有其他建议吗?

+0

不是自动保存为草稿可见的消息?然后他们会自己清理大部分。 – 2012-07-16 08:59:45

+0

嘿,很聪明!哇,可能是一个足够简单的解决方案!谢谢@LucFranken! – Chris 2012-07-16 09:02:00

+0

@LucFranken:你能提交答案吗?我真的发现你的简单解决方案是最好的答案,并且如果可能,我想接受这个答案。谢谢! – Chris 2012-07-16 09:21:35

回答

2

不是自动保存的消息显示为草稿版本吗?然后,他们将清理他们大多自行

按照要求一个答案;)

+0

谢谢Luc! :) – Chris 2012-07-16 09:44:07

0

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

当用户忙于某一特定信息(比如说1分钟)时,将该信息保存为'概念',用户在离开页面后可以稍后查看该信息。我绝不会删除概念,并让用户亲自做这件事。

当用户点击“保存”(而不是“发送”)时,您也会给消息“概念”状态(如果它之前没有)。

一旦发送了消息,就会给它发送状态。但在开发消息系统之前,您需要考虑以下几点:

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

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

+0

谢谢你的想法罗宾。当然,实际上数据库结构是非常不同的,并且没有表格“messages”,我只是不想增加这个问题的复杂性,因为我觉得它对于我的实际问题并不重要。根据你的想法,“待定”和“概念”:与用户点击撰写/回答时马上插入它有什么不同?除了等一会儿?你认为这会整理大部分这些信息吗?此外:在这种情况下,我不得不经常在db上运行脚本,我宁愿避免... – Chris 2012-07-16 09:14:50