2010-11-03 46 views
0

我在做我的績效管理體系,我想顛倒,所以你可以看到你和誰之間的對話,你用..方法來顯示對話框

消息功能,因此,如果您有與海誓山盟之前pm'ed,它會顯示下。

這裏有一個例子我在哪裏「輕拍」,並我將要回答的最後一個下午,我從戴安娜有:

***TEXTFIELD*** 
Yes okay, ill be there at 10pm 
****SEND*** 
Diana- What about the cafetera? 
Pat - Sure, when and where? 
Diana - Hi, how are you long time no see, wanna meetup? 

我想這個應該怎麼做?現在你看到的消息seperatly,它不顯示任何舊點的

這是我上應該如何應工作思路

如果戴安娜提筆給你,第一次這樣的:

戴安娜 - 嗨,你好久不見,想見面嗎?

然後有一個正常的文本框,你可以鍵入回答上面。如果你回答了這個問題,它會將消息的標識Diana消息存儲在你要插入的行的「對話框」列中。

它也將更新行,戴安娜的消息,並在那裏的列「對話」應用id。然後與彼此來回你pm,並且當你通過郵件上方的文本框回答時,它總是將第一個id存儲在對話欄中。

然後爲了顯示文本框下的所有pm,我將只檢查消息的列「對話框」中是否有任何$id。 如果有,然後採取該$id,並獲得列對話框$id所有行,並按日期排序

您如何看待這種方法?是否有任何缺點,這可以做得更容易嗎?你有更好的方法嗎?

回答

0

你得到了什麼:sender_idrecipient_id和多數民衆贊成你所需要的IMO

pm_table

------------------------------------------------------------ 
| sender_id | recipient_id | message | created_at   | 
------------------------------------------------------------ 
| 3   | 7   | hi  | 2007-09-08 09:01:00 | 
------------------------------------------------------------ 
| 7   | 3   | hi you | 2007-09-08 09:03:00 | 
------------------------------------------------------------ 
| 3   | 7   | meet? | 2007-09-08 09:05:00 | 
------------------------------------------------------------ 
| 7   | 3   | yeah | 2007-09-08 09:07:00 | 

USER_TABLE

----------------------- 
| user_id | user_name | 
----------------------- 
| 3  | john  | 
----------------------- 
| 7  | darcy  | 

查詢:

SELECT send.user_name AS sender, 
recipient.user_name AS recipient, 
pm.message AS message 
FROM pm_table AS pm 
JOIN user_table AS sender ON (pm.sender_id = sender.user_id) 
JOIN user_table AS recipient ON (pm.recipient_id = recipient.user_id) 
WHERE pm.sender_id IN (3,7) 
OR pm.recipient_id IN (3,7) 
ORDER BY pm.created_at ASC 
LIMIT 5 

結果:

-------------------------------- 
| sender | recipient | message | 
-------------------------------- 
| john | darcy  | hi  | 
-------------------------------- 
| darcy | john  | hi you | 
-------------------------------- 
| john | darcy  | meet? | 
-------------------------------- 
| darcy | john  | yeah | 

編輯

與在pm_table參考主題/對話框應該做的伎倆

SELECT sender.username AS sender, 
recipient.username AS recipient, 
pm.message AS message, 
topic.topic_name AS topic 
FROM pm_table AS pm 
JOIN user_table AS sender ON (pm.sender_id = sender.user_id) 
JOIN user_table AS recipient ON (pm.reciver_id = recipient.user_id) 
JOIN topic_table AS topic ON (pm.topic_id = topic.topic_id) 
WHERE pm.topic_id IN (1) 

我敢肯定,查詢可以做的更好的表:/

+0

是的,但我只想顯示對話框,如果它們都回答了,並且沒有做出新的下午並寫入,您是否可以將它實現到您的答案中? ..thats爲什麼我想到「對話框」欄 – Johnson 2010-11-03 16:22:39

+0

你想讓你的用戶有不同的對話框?如果你第一次給我寫信,它只顯示你的信息。如果我回答它顯示你的和我[在下午5點在對話框(限制5)什麼可以很容易地改變] – teemitzitrone 2010-11-03 16:39:19

+0

是與彼此不同的對話。如果我給你發消息,你回答我,它應該只顯示我寫的和你在同一個「對話框」上寫的東西......所以,如果我給你發消息,而你不通過文本框形式回答,而是發出新消息 - >鍵入我的名字 - >然後寫信給我,它不應該顯示我以前的消息,因爲你沒有響應同一個對話框,但創建了一個新的.. – Johnson 2010-11-03 16:46:34