我正在使用ColdFusion創建一個新的聊天系統,但我在處理一個小問題時遇到了很多麻煩。訂購所有查詢
首先我會解釋系統是如何工作的。當與某人建立新的聊天時,它會在MySQL表conversations
中創建一個對話行。之後,用戶可以發送對方的消息。在發送消息時,將一行插入表conversations_messages
中,其中包含時間戳,發送消息的用戶,消息以及消息的ID。聽起來合乎邏輯,但現在出現了一個大問題:組織所有這些信息。
用戶可以與他人在頁面上查看自己的郵件,這是該頁面的代碼:
// Check conversation ID based on page url
<cfif IsDefined('URL.chat') and URL.chat neq "">
// Load conversation based on page url
<cfquery name = "getconv" datasource = "#DSN#">
SELECT *
FROM `conversations`
</cfquery>
// Get all messages from this conversation
<cfoutput query="getconv">
<cfquery name = "getmessages" datasource = "#DSN#">
SELECT *
FROM `conversations_messages`
WHERE `conversation` = '#chat#'
ORDER BY `conversations_messages`.`id` DESC
</cfquery>
// Get messages sent by 'user_one'
<cfquery name = "my" datasource = "#DSN#">
SELECT *
FROM `conversations_messages`
WHERE `conversation` LIKE '#chat#'
AND `user` LIKE '#user.id#'
ORDER BY `conversations_messages`.`id` DESC
</cfquery>
// Get messages sent by 'user_two'
<cfquery name = "friend" datasource = "#DSN#">
SELECT *
FROM `conversations_messages`
WHERE `conversation` LIKE '#chat#'
AND `user` LIKE '#getconv.user_two#'
</cfquery>
<div class="content">
// Messages sent by 'user_one' aka. user that created conversation
You: <cfoutput><cfloop query="my">#my.message#<br></cfloop></cfoutput>
// Messages sent by 'user_two'
Friend: <cfoutput><cfloop query="friend">#friend.message#</cfloop></cfoutput>
</cfoutput>
</div>
</cfif>
這是結果如何顯示現在:(你可以看到它是由用戶排序)
我希望它由信息ID進行排序,所以它顯示是這樣的:
我希望現在有點清楚! 幫助將不勝感激!
最後一段是你失去我的地方:)你能發表一個實際輸出的樣本 - 而你想看到什麼呢? – Leigh
(..還有,你忘了通過'conversations_messages.id DESC'命令第二個查詢嗎?) – Leigh
在我看來,下一步是查詢我和朋友之間查詢的聯合查詢,按時間戳排序。 –