powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Персональные сообщения
8 сообщений из 8, страница 1 из 1
Персональные сообщения
    #37080496
ViktorSemenov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую.

Помогите, пожалуйста, со структурой таблиц для обмена персональными сообщениями на сайте.
Требования такие: пользователь может написать сообщение другим пользователям (одному или нескольким).
При написании нового сообщения начинается новый диалог. При ответе на какое-либо сообщение - диалог продолжается.
У любого пользователя может быть сколько угодно диалогов с другими пользователями.
У каждого сообщения есть флажки, просмотренно оно, непросмотренно или удалено.

Вывод сообщений хочется такой: на странице списка личных сообщений, пользователь видит список диалогов. каждый элемент этого списка содержит последнее (по дате) сообщение этого диалога, а так же флажек, есть ли в этом диалоге непрочитанные пользователем сообщения.

Я пока дошел до 2х таблиц.
Первая - messages
MID (ID-сообщения), тему, текс сообщение, ID-юзера, и дату

Таблица получателей receivers
MID, ToUID, ReceiverStatus - (ToUID - кому было отправлено, ReceiverStatus - прочитанное, непрочитанное, удаленное)

А вот как вывести список диалогов с последним сообщением и флагом, содержит ли каждый диалог непрочитанные сообщения, я все никак докумекать не могу. Прошу помощи. :)
Заранее спасибо.
...
Рейтинг: 0 / 0
Персональные сообщения
    #37080523
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViktorSemenov,

добавить в сообщения дату прочтения получателем и ид предыдущего сообщения (иначе как вы будете цепочки строить?)
И вообще сделать не получателей, а юзеров, а в сообщении будет 2 поля - от кого и кому.
...
Рейтинг: 0 / 0
Персональные сообщения
    #37080524
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поправка - не заметил, что можно сразу нескольким. второе замечание отменяется.
...
Рейтинг: 0 / 0
Персональные сообщения
    #37080542
ViktorSemenov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Допустим, я добавлю с таблицу сообщений еще поле DialogID.
При новом сообщении оно будет равно ID этого сообщения,
При ответах, DialogID будет равен DialogID предыдущего сообщения (что в принципе означает, что у всех сообщений одного диалога, будет один и тот же DialogID равный ID-самого первого сообщения).

Но чем это мне поможет? Трудность у меня в выводе списка этого диалога в виде, как написано в 1 посте этой темы.
(Самое последнее сообщение каждого диалога и флажек, были ли прочитаны сообщения в этом диалоге или нет)
...
Рейтинг: 0 / 0
Персональные сообщения
    #37080562
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViktorSemenov,

если вы его добавите в таблицу сообщений. отправите сообщение 2м людям. оба ответят. это же будут уже 2 разных диалога, не так ли? надо диалогид отмечать в ресиверсах, а лучше отмечать там ид предыдущего сообщения - правда, тогда субд должна уметь рекурсивные запросы.
А вообще, посмотрите, как это в том же пхпББ делается, там вроде то, что вам надо.
...
Рейтинг: 0 / 0
Персональные сообщения
    #37080580
ViktorSemenov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ответы могут быть только одному человеку, так что с этим проблем не будет.
...
Рейтинг: 0 / 0
Персональные сообщения
    #37081103
Фотография Rin@t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViktorSemenovОтветы могут быть только одному человеку , так что с этим проблем не будет.Не стоит на это закладываться. Проверено.
...
Рейтинг: 0 / 0
Персональные сообщения
    #37124264
dv_kz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если еще актуально.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE MESSAGES(
  MESS_ID INT( 20 ) NOT NULL AUTO_INCREMENT,
  MESS_TO INT( 10 ) NOT NULL DEFAULT  0 ,
  MESS_FROM INT( 10 ) NOT NULL DEFAULT  0 ,
  MESS_DATE TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  MESS_TEXT TEXT NOT NULL,
  IS_READ INT( 1 ) NOT NULL DEFAULT  0 ,
  PRIMARY KEY (MESS_ID)
)

Работает нормально.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Персональные сообщения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]