Я создаю новую чат-систему с ColdFusion, но у меня возникли проблемы с решением небольшой проблемы.Закажите все запросы
Прежде всего я объясню, как работает система. При создании нового чата с кем-то он создает строку беседы в таблице MySQL conversations
. После этого пользователи могут отправлять друг другу сообщения. При отправке сообщения строка вставляется в таблицу conversations_messages
с меткой времени, пользователем, который отправил сообщение, сообщение и, конечно, идентификатор сообщения. Звучит логично, но теперь возникает большая проблема: организация всех этих сообщений.
Пользователи могут просматривать свои сообщения с другими на странице, это код этой страницы:
// 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>
Это, как результаты показывают прямо сейчас: (как вы можете видеть, что это отсортировано пользователем)
Я хочу, чтобы быть отсортированы по идентификатору сообщения, поэтому он показывает, как это:
Надеюсь, теперь это немного яснее! Помощь будет оценена!
В этом последнем абзаце вы потеряли меня :) Можете ли вы опубликовать образец фактического вывода - и что вы хотели бы видеть вместо этого? – Leigh
(.. также, вы забыли заказать второй запрос 'conversations_messages.id DESC'?) – Leigh
Полагает, что следующим шагом является запрос объединения запросов между запросами my и friend, упорядоченный по метке времени. –