[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как орагнизовать БД для личных сообщений
IamSmorodin
Здравствуйте. Хочу создать личную почту в таком виде.
На странице сообщений, человек видет с кем ведется переписка, и при переходе в одну из переписок, он видит всю историю сообщений (примерно как в мэйл мире)
Помогите, как можно организовать таблицу и запрос к ней, а то всю голову сломал уже. Спасибо заранее.



Спустя 2 часа, 12 минут, 42 секунды (16.01.2009 - 12:28) FatCat написал(а):
|ID сообщения|Заголовок|Текст|время|от кого ID|кому ID|

Если пользователям разрешено сортировать сообщения по папкам, то еще и поле папки.

Спустя 6 минут, 3 секунды (16.01.2009 - 12:34) IamSmorodin написал(а):
FatCat Спасибо, а вот вопрос по запросу, как организовать запрос, чтобы он вывел мне лишь список тех с кем у меня ведется переписка, а не все сообщения?

Спустя 15 минут, 3 секунды (16.01.2009 - 12:49) sergeiss написал(а):
Дык... В запросе укажи ограничение в виде "WHERE ....", где вместо многоточия - условие на выбор данных по конкретному человеку. Его идентификатор или еще что-то. В терминах сообщения от FatCat это будет 'от кого ID'

Спустя 41 минута, 52 секунды (16.01.2009 - 13:31) IamSmorodin написал(а):
sergeiss Нет, это я все понимаю, проблемма создать список людей, с кем я веду переписку.
Допустим, два человека написали мне и одному я (пусть это будут первые сообщения). Что получается. Мой ID = 1

от кого ID | кому ID
3 1
2 1
1 5

Но в списке тех, с кем я переписываюсь, должны отображаться все три записи. Вот в чем у меня проблемма. НЕ знаю, как запрос составить



Спустя 7 минут, 55 секунд (16.01.2009 - 13:39) sergeiss написал(а):
Допустим, эти поля называются id_from и id_to.
Тогда условие будет "WHERE id_from=1 or id_to=1".

Спустя 11 минут, 56 секунд (16.01.2009 - 13:51) IamSmorodin написал(а):
sergeiss А потом я так понимаю, надо делать какую-то сортировку, так как записей вида 1-5 и 5-1 может быть очень много, то есть выборку

Спустя 8 минут, 43 секунды (16.01.2009 - 14:00) sergeiss написал(а):
"Ну дык, ёлы-палы" (с) smile.gif
Сортируй. Выбирай. ORDER BY и LIMIT тебе в руки.

PS. Хоть и говорят, что нехорошо отправлять "к первоисточникам", но всё же почитай описание оператора SELECT и всех его опций. Тогда всё станет понятно.

Спустя 2 часа, 25 минут, 31 секунда (16.01.2009 - 16:25) FatCat написал(а):
ID сообщения сделать по инкременту, тогда сортировка по нему будет фактически соответствовать сортировке по дате/времени.
И лимитами резать на страницы по нужному количеству сообщений.

Спустя 9 минут, 55 секунд (16.01.2009 - 16:35) FatCat написал(а):
Для примера структура таблицы личных сообщений этого форума:
SQL
CREATE TABLE `ibf_messages` (
`msg_id` int(10) NOT NULL auto_increment,
`msg_date` int(10) default NULL,
`read_state` tinyint(1) default NULL,
`title` varchar(128) default NULL,
`message` text,
`from_id` mediumint(8) NOT NULL default '0',
`vid` varchar(32) default NULL,
`member_id` mediumint(8) NOT NULL default '0',
`recipient_id` mediumint(8) NOT NULL default '0',
`attach_type` tinyint(128) default NULL,
`attach_file` tinyint(128) default NULL,
`cc_users` text,
`tracking` tinyint(1) default '0',
`read_date` int(10) default NULL,
PRIMARY KEY (`msg_id`),
KEY `member_id` (`member_id`),
KEY `vid` (`vid`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=0 ;


`msg_id` - айдишник (порядковый номер)
`msg_date` - дата/время отправки
`read_state` - получает единичку при открытии получателем, дальше метится как прочитанное.
`title` - заголовок
`message` - текст письма
`from_id` - от кого
`vid` - входящее или исходящее
`member_id` - айдишник владельца ящика
`recipient_id` - айдишник получателя
`attach_type`- миме-тип аттача
`attach_file` - приаттаченный файл
`cc_users`- айдишники получателей копии при массовой рассылке
`tracking` - Оповещать на мейл
`read_date` - время прочтения

Но это навороченная система, не знаю, нужно ли топикстартеру так сложно.


_____________
Мой Twitter
Подписывайтесь :)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.