Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Персональные сообщения / 8 сообщений из 8, страница 1 из 1
26.01.2011, 20:46
    #37080496
ViktorSemenov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Персональные сообщения
Приветствую.

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

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

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

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

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

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

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

если вы его добавите в таблицу сообщений. отправите сообщение 2м людям. оба ответят. это же будут уже 2 разных диалога, не так ли? надо диалогид отмечать в ресиверсах, а лучше отмечать там ид предыдущего сообщения - правда, тогда субд должна уметь рекурсивные запросы.
А вообще, посмотрите, как это в том же пхпББ делается, там вроде то, что вам надо.
...
Рейтинг: 0 / 0
26.01.2011, 21:46
    #37080580
ViktorSemenov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Персональные сообщения
Ответы могут быть только одному человеку, так что с этим проблем не будет.
...
Рейтинг: 0 / 0
27.01.2011, 10:57
    #37081103
Rin@t
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Персональные сообщения
ViktorSemenovОтветы могут быть только одному человеку , так что с этим проблем не будет.Не стоит на это закладываться. Проверено.
...
Рейтинг: 0 / 0
18.02.2011, 12:31
    #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]