2010-11-03 47 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