Как реализовать обмен сообщениями между пользователями

Ответить
Аватара пользователя
Assasin
Сообщения: 105
Зарегистрирован: 17.02.2011
Как реализовать обмен сообщениями между пользователями? Лучше использовать БД? Создать таблицу для каждого пользователя? У кого есть опыт помогите, или если вы использовали ЦМС поделитесь как там реализовано?
< ̄`ヽ、       /  ̄ >
 ゝ、  \ /⌒ヽ,ノ   /´
   ゝ、 ( ( ͡◉ ͜> ͡◉) /
     >     ,ノ
  ℧   ∠_,,,/´
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

Аватара пользователя
Distructor
Администратор
Сообщения: 1607
Зарегистрирован: 28.12.2009
если что-то типа личных сообщений (т.е. общение 1 на 1),
то понадобится собственно таблица пользователей (ид пользователя, имя пользователя, остальные поля по вкусу..)
и таблица сообщений (ид, дата, ид автора сообщения, ид адресата, текст сообщения)

если что-то типа простого чата,
то таблица сообщений будет проще (ид, дата, ид автора сообщения, текст сообщения)

Аватара пользователя
AgentSIB
Сообщения: 329
Зарегистрирован: 17.05.2010
Distructor писал(а):если что-то типа простого чата,
то таблица сообщений будет проще (ид, дата, ид автора сообщения, текст сообщения)
А я бы оставил поле ИД реципиента, можно было бы заюзать под приватные сообщения :)
Frustra fit per plura quod potest fieri per pauciora © Закон "Бритвы Оккама"

Аватара пользователя
Assasin
Сообщения: 105
Зарегистрирован: 17.02.2011
и таблица сообщений (ид, дата, ид автора сообщения, ид адресата, текст сообщения)
а каким образом считать сообщения которые пользователь уже прочитал что бы выдавать число новых сообщений, разве поиск среди всех id не будет долгим? на этом форуме именно так реализовано?
< ̄`ヽ、       /  ̄ >
 ゝ、  \ /⌒ヽ,ノ   /´
   ゝ、 ( ( ͡◉ ͜> ͡◉) /
     >     ,ノ
  ℧   ∠_,,,/´
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

Аватара пользователя
SLITE
Сообщения: 203
Зарегистрирован: 01.01.2010
а каким образом считать сообщения которые пользователь уже прочитал
создаешь дополнительное поле, где будет записываться прочтено ли сообщение или нет, а функцию можно реализовать так:
когда открываешь сообщение выполняется запрос и значение поля изменяется с 1 на 0, а потом подсчитываешь количество строк где значение =1 ( 1 т.е сообщение не прочитано) .

Аватара пользователя
AgentSIB
Сообщения: 329
Зарегистрирован: 17.05.2010
А с чего поиск по ИД должен быть долгим? Если поле индексируемое, то это самый быстрый способ получить данные из таблицы. Собственно для этого и вводят индексы.
Frustra fit per plura quod potest fieri per pauciora © Закон "Бритвы Оккама"

Аватара пользователя
Assasin
Сообщения: 105
Зарегистрирован: 17.02.2011
Спасибо, я правильно понимаю что надо сделать следующее

USER
id user pass name family male
--------------------------------------------------------------
1 masha **** имя фамилия ж
2 vasya **** имя фамилия м
3 petya **** имя фамилия м
4 anya ***** имя фамилия ж
5 misha **** имя фамилия м
--------------------------------------------------------------

Маша отправила Мише сообщение привет
Вася отправил Ане как дела

MESSAGE
--------------------------------------------------------------
id to ot message data status
1 5 1 привет 1.1.11 0
2 4 2 как дела 1.1.11 0
--------------------------------------------------------------

теперь аня входит и в базе начинается поиск по полю to где ид = 4 ?

ПРАВИЛЬНО? ))
< ̄`ヽ、       /  ̄ >
 ゝ、  \ /⌒ヽ,ノ   /´
   ゝ、 ( ( ͡◉ ͜> ͡◉) /
     >     ,ノ
  ℧   ∠_,,,/´
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

Аватара пользователя
SLITE
Сообщения: 203
Зарегистрирован: 01.01.2010
только не ид = 4 а где to=4.

Аватара пользователя
Assasin
Сообщения: 105
Зарегистрирован: 17.02.2011
спасибо..попробую
< ̄`ヽ、       /  ̄ >
 ゝ、  \ /⌒ヽ,ノ   /´
   ゝ、 ( ( ͡◉ ͜> ͡◉) /
     >     ,ノ
  ℧   ∠_,,,/´
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

Аватара пользователя
AgentSIB
Сообщения: 329
Зарегистрирован: 17.05.2010
Вообще это минимальный набор полей, можно еще добавить дату получения, дату прочтения, ну и прочее для удобства.
По поводу названия полей: to и ot - это называется быдлокодинг :) Используй английский :) to from. Либо serder_id и recipient_id - так еще корректней.
Frustra fit per plura quod potest fieri per pauciora © Закон "Бритвы Оккама"

Аватара пользователя
Assasin
Сообщения: 105
Зарегистрирован: 17.02.2011
Спасибо я всегда так и делаю. to ot это на скорую руку хотя что то в этом есть))))
< ̄`ヽ、       /  ̄ >
 ゝ、  \ /⌒ヽ,ノ   /´
   ゝ、 ( ( ͡◉ ͜> ͡◉) /
     >     ,ノ
  ℧   ∠_,,,/´
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

Ответить