Я строю систему обмена сообщениями, похожую на Facebook (где она отображает сообщения в виде потоков).
В основном мне нужно указать как минимум 1 идентификатор участника, чтобы получить из списка. Так что это либо столбец «до», чтобы вы могли получать сообщения, которые вы получено от определенного члена или используйте столбец «из» для получения сообщений отправил вам. Либо, либо команда должна указывать идентификатор члена где-либо и иметь возможность отфильтровывать повторяющиеся записи.
В этом случае: 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
Что я делаю неправильно?
Ты пробовал
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");
Если вам нужна дополнительная помощь, напишите нам по адресу [email protected].