【问题标题】:Messaging System: Save and Send - when to do the INSERT of a new message?消息系统:保存并发送 - 何时插入新消息?
【发布时间】:2012-07-15 02:26:42
【问题描述】:

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

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

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

您还有什么建议?

【问题讨论】:

  • 自动保存的消息不显示为草稿版本吗?然后他们会自己清理大部分。
  • 嘿,很聪明!哇,可能是一个足够简单的解决方案!谢谢@LucFranken!
  • @LucFranken:你能提交答案吗?实际上,我发现您的简单解决方案是最好的答案,如果可能的话,我愿意接受吗?谢谢!

标签: php mysql user-interface


【解决方案1】:

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

根据要求回答;)

【讨论】:

    【解决方案2】:

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

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

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

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

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

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

    【讨论】:

    • 感谢罗宾的想法。当然,实际上数据库结构非常不同并且没有表messages,我只是不想增加问题的复杂性,因为我觉得这对于我的实际问题并不重要。根据您对“待定”和“概念”的想法:当用户单击撰写/回答时,与立即插入它有什么不同?除了等一分钟?你认为这会整理出大部分信息吗?此外:在这种情况下,我必须不断地在数据库中运行脚本,我希望避免这种情况......
    猜你喜欢
    • 2020-12-06
    • 2023-04-04
    • 2021-11-03
    • 2021-06-01
    • 2023-03-17
    • 2019-10-28
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多