|
|
|
| Пишу чат для он-лайн игры. По моему мнению любой чат должен иметь возможность отпраки личных сообщений, т.е. видимых только адресату. Вот код из инсталлятора таблиц игры
CREATE TABLE chat(
id_message INT NOT NULL AUTO_INCREMENT,
id_user INT NOT NULL,
time TIME NOT NULL DEFAULT "00:00:00",
type_message ENUM ("us", "mod", "ad", "bot", "sys") DEFAULT "us",
message TEXT NOT NULL,
for_user TEXT,
hide ENUM ("hide", "show"),
PRIMARY KEY (id_message)
TYPE=MyISAM;
|
Необходимо одним запросом получить сообщения отправленные всем, отправленные любому из юзеров, но видимые и сообщения отправленные только пользователю.
P.S. Там поле есть type_message - это для цветового выделения сообщений от админов, модераторов, ботов и системных сообщений. Не обращайте внимания. | |
|
|
|
|
|
|
|
для: klassgame
(13.04.2007 в 14:38)
| |
$current_user = intval($_SESSION['used_id']);
$sql = "SELECT * FROM chat WHERE for_user IS NULL OR for_user =$current_user OR hide = 'show' ";
|
если конечно for_user именно так работает.
Как задаются сообщения всем? | |
|
|
|
|
|
|
|
для: Trianon
(13.04.2007 в 14:52)
| | в форме отправки сообщения два поля "кому" и само сообщение, если поле "кому" пустое, то то в скрипт добавляет в for_user значение "ALL". Т.е. for_user работает не от нулевого значения, а от "ALL". Спасибо. Я сейчас попробую подправить Ваш пример и проверить. | |
|
|
|
|
|
|
|
для: klassgame
(13.04.2007 в 15:29)
| | Угу . А потом зарегистрируется посетитель ALL и станет жаловаться, что приватные реплики в его адрес всем видны. | |
|
|
|
|
|
|
|
для: Trianon
(13.04.2007 в 15:35)
| | Ну можно запретить регу пользователя ALL :) Это проще, чем опять думать как сделать... | |
|
|
|
|
|
|
|
для: mr Bin
(13.04.2007 в 15:49)
| | когда делать проще чем думать, результат такой деятельности обычно бьет ниже пейджера. | |
|
|
|
|
|
|
|
для: Trianon
(13.04.2007 в 15:35)
| | М-дя... Об этом я не подумал... Тогда лучше использовать ваш пример, т.е. нет адресата - значит всем.:) | |
|
|
|
|
|
|
|
для: klassgame
(13.04.2007 в 15:50)
| | Можно и запретить, можно зарегистрировать самому... В общем спасибо за помощь! Вроде работает. | |
|
|
|