ColdFusion で、さまざまな MySQL テーブルを使用するチャット スクリプトを作成しました。1 つは会話が保存される場所で、もう 1 つは会話を開始したユーザーと受信したユーザーを定義する場所です。
これで、誰かと一緒にチャットできるスクリプトを作成しました。メッセージを送信すると、タイムスタンプ、メッセージ ID、メッセージを送信したユーザー ID、およびメッセージ自体を含む行が MySQL テーブルに追加されます。会話全体が次のコードで表示されます。
// Get all conversations started by the user that is signed in
<cfquery name = "Friendship" datasource = "#DSN#">
SELECT *
FROM `conversations`
WHERE `user_one` LIKE '#user.id#'
ORDER BY `conversations`.`lastmessage` DESC
</cfquery>
// Get all conversations started by others but receiver is the user that is signed in
<cfquery name = "FriendshipBack" datasource = "#DSN#">
SELECT *
FROM `conversations`
WHERE `user_two` LIKE <cfqueryparam value="#user.id#" cfsqltype="cf_sql_integer">
ORDER BY `conversations`.`lastmessage` DESC
</cfquery>
// OUTPUT - conversations that I began
<cfoutput query="Friendship">
// This code translates a user id into a name
<cfquery name = "FriendshipToUsername" datasource = "#DSN#">
SELECT *
FROM users
WHERE id = '#user_two#'
</cfquery>
<cfif IsDefined("FriendshipToUsername.username")>
<cfif IsDefined('URL.chat') and URL.chat neq "">
</cfif>
// Display username
<h3>#FriendshipToUsername.username#</h3>
</cfif>
</cfoutput>
/// OUTPUT - conversations that I received
<cfoutput query="FriendshipBack">
// This query translates a user id into a name
<cfquery name = "FriendshipToUsernameBack" datasource = "#DSN#">
SELECT *
FROM users
WHERE id = <cfqueryparam value="#user_one#" cfsqltype="cf_sql_integer">
</cfquery>
<cfif IsDefined('URL.chat') and URL.chat neq "">
</cfif>
// Display username
<h3>#FriendshipToUsernameBack.username</h3>
</cfoutput>
現時点では、チャット リストは 2 つのカテゴリに分かれています。1 つは、サインインしているユーザーが会話を開始したリストであり、もう 1 つは、サインインしているユーザーが他の誰かから会話を受信した場所です。問題は、そのように表示したくないので、両方のリストを混ぜ合わせて、タイムスタンプに基づいてすべてをリストしたい (最新のものから古いものへ)
現時点では、チャット リストは 2 つのカテゴリに分かれています。1 つは、サインインしているユーザーが会話を開始したリストであり、もう 1 つは、サインインしているユーザーが他の誰かから会話を受信した場所です。問題は、そのように表示したくないので、両方のリストを混ぜ合わせて、タイムスタンプに基づいてすべてをリストしたい (最新のものから古いものへ)
これを達成する方法はありますか?
自分のコードが悪用可能であることはわかっていますが、これはまだ WIP です