Facebook как система обмена сообщениями - удаление дубликатов отправителя (т.е. одно сообщение на пользователя, а не дубликаты).
Я строю систему обмена сообщениями, похожую на Facebook (где она отображает сообщения в виде потоков).
В основном мне нужно указать как минимум 1 идентификатор участника, чтобы получить из списка. Так что это либо столбец "to", чтобы вы могли получать сообщения, которые вы получили от определенного участника, либо использовать столбец "from" для получения отправленных вам сообщений. Либо, либо команда должна указывать идентификатор члена где-либо и иметь возможность отфильтровывать повторяющиеся записи.
В этом случае: http://i.imgur.com/oki7bWQ.png Поскольку я являюсь участником с идентификатором 1, я хочу иметь возможность получать отправленные мне сообщения, но отфильтровывать дубликаты сообщений, отправленных мне по идентификатору пользователя. 50.
Так что конечный результат становится примерно таким: http://i.imgur.com/jmP96dd.png
Моя текущая функция:
SELECT * FROM `cometchat` WHERE `to` = 1 or `from` = 1 ORDER BY `sent` DESC
Это вывод вышеуказанного кода: i.imgur.com/zQhNNcu.png
Что я делаю неправильно?
2 ответа
Ты пробовал
SELECT DISTINCT SENDER_ID, MESSAGE_TEXT FROM ...
в нижней части запроса? Обратите внимание, используя "MESSAGE" = message_text вместо MESSAGE_ID.
Это должно помочь, если вы добавляете несколько независимых сообщений (несколько MESSAGE_ID) для одного и того же сообщения с несколькими получателями.
Вам нужно сделать запрос таким образом, чтобы все разговоры между пользователями были получены аналогично тому, как мы это делаем в журналах на панели администрирования CometChat. Никаких изменений в способе вставки записей в базу данных не требуется.
Например, чтобы получить диалоги между $userid1 и $userid2:
$sql = ("select * from cometchat where (`from` = ".mysqli_real_escape_string($dbh,$userid1)." and `to` = ".mysqli_real_escape_string($dbh,$userid2).") or (`to` = ".mysqli_real_escape_string($dbh,$userid1)." and `from` = ".mysqli_real_escape_string($dbh,$userid2).") order by id desc");
Если вам нужна дополнительная помощь, напишите нам по адресу support@cometchat.com.