Я показываю статус сообщения, который отличается от каждого пользователя. Предположим, что user1
отправляет сообщение пользователю2, статус сообщения пользователя1 затем устанавливает read
, а user2
установлено как unread
по умолчанию. Он будет обновлен после того, как пользователь2 user2
сообщение.
Таким образом, в этом случае сообщение пользователя1 (из папки «Входящие») будет иметь шрифт серого цвета, который указывает, что сообщение настроено на read
(поскольку user1
– это тот, кто отправляет). С другой стороны, user2
имеет полужирный шрифт, который указывает, что сообщение unread
.
Вот первая структура таблицы:
message(messageid, fromid, toid, message, timestamp, status)
Проблема здесь в том, что если я обновляю статус сообщения для read
, он влияет на другую сторону ( user2
). Поэтому я добавляю еще один столбец, который будет отличать статус от user1
и user2
:
message(messageid, fromid, toid, message, timestamp, from_status, to_status)
Здесь from_status
для fromid
и to_status
для toid
. Но у меня возникла проблема с тем, как использовать эти значения для отображения состояния.
Код PHP, который я использую во время первой попытки, таков:
<?php $id = $_SESSION['id']; $query = mysql_query("SELECT m.* FROM message m LEFT JOIN message m2 ON ( (m.fromid=m2.fromid AND m.toid=m2.toid) OR (m.fromid=m2.toid AND m.toid=m2.fromid) ) AND m.timestamp<m2.timestamp WHERE (m.fromid='$id' OR m.toid='$id') AND m2.toid IS NULL ORDER BY timestamp DESC"); while ($message = mysql_fetch_array($query)) { if ($message['status'] === 'unread') { // bold font style will be applied } else { // gray-colored font will be applied } } ?>
(Запрос получает каждый разговор от каждого пользователя с последним разговором.)
Этот код отлично работает для основного пользователя, который является user1
, но влияет на другую сторону, которая считает, что сообщение, полученное от пользователя2, настроено на read
или unread
.
Итак, у меня возникли проблемы с тем, что делать с измененной таблицей, имея по 2 отдельных status
для каждого пользователя. Как я могу это сделать?