2012-07-16 35 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