Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Личные сообщения в чате
Покинул форум
Сообщений всего: 13
Дата рег-ции: Окт. 2012
Помог: 0 раз(а)
Доброго времени суток, требуется Ваша помощь.
Занимаюсь реализацией своего чата, т.к. хочу попрактиковаться в написании скриптов. Использую связку PHP+MySQL+немного AJAX. Запись сообщений ведется в базу.
Проблема со следующим - нужно реализовать личные сообщения, например при двойном нажатии на имя пользователя в списке онлайн будет открываться окошко личной переписки. Уже довольно продложительное время ломаю голову - как реализовать таблицы для личных сообщений в базе и в принципе, как реализовать?
Заранее спасибо откликнувшимся!
vanicon
Отправлено: 01 Октября, 2012 - 01:13:21
Частый посетитель
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010 Откуда: Самара
Помог: 17 раз(а)
Цитата:
Запись сообщений ведется в базу.
Ну наверно есть табличка для обычных сообщений, так там нужно просто создать 1 дополнительное поле(флаг по сути), которое будет указывать например на то что это сообщение приватное...
----- Так было, так есть и так будет
DeepVarvar
Отправлено: 01 Октября, 2012 - 01:14:57
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
добросить два поля в сообщухи: from и to, если to не заполнено, значт всем, если заполнено, то известно кому. (Добавление) vanicon принимающий тоже должен мочь читать истрию - поэтому 2 поля.
Покинул форум
Сообщений всего: 13
Дата рег-ции: Окт. 2012
Помог: 0 раз(а)
Непонятно еще как быть с отображением. Например: личное сообщение не просто выделяется цветом в общем чате - а создается отдельное окно для лички. И кстати, как можно при новой личке генерировать html код? Не подскажете?
vanicon
Отправлено: 01 Октября, 2012 - 02:13:44
Частый посетитель
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010 Откуда: Самара
Помог: 17 раз(а)
Цитата:
личное сообщение не просто выделяется цветом в общем чате - а создается отдельное окно для лички.
Ну так выбирайте из таблицы сообщений, и смотрите где там личка там в окно выделяете или еще что...
Цитата:
И кстати, как можно при новой личке генерировать html код? Не подскажете?
Если я правильно понял то речь идет о автообновлении при ожидание личного сообщения.
Тут можно ajax'om пинать запросы на сервер, и выбирать новые сообщения.
----- Так было, так есть и так будет
inqubus
Отправлено: 01 Октября, 2012 - 02:18:24
Новичок
Покинул форум
Сообщений всего: 13
Дата рег-ции: Окт. 2012
Помог: 0 раз(а)
vanicon пишет:
Тут можно ajax'om пинать запросы на сервер, и выбирать новые сообщения.
Выбирать это да, а как лучше реализовать к примеру:
пользователь А пишет приват пользователю Б
происходит запись сообщения в базу и вывод из базы
генерируется окошко приватного чата
Непонятно с реализацией последнего пункта
Alho
Отправлено: 01 Октября, 2012 - 05:49:12
Посетитель
Покинул форум
Сообщений всего: 322
Дата рег-ции: Апр. 2012
Помог: 11 раз(а)
Это достаточно простая задача. Если возникают проблемы с реализацией - скачайте пару чатов - рассмотрите конкретные реализации.
inqubus
Отправлено: 01 Октября, 2012 - 17:39:24
Новичок
Покинул форум
Сообщений всего: 13
Дата рег-ции: Окт. 2012
Помог: 0 раз(а)
Никто не подскажет, как при личном сообщение генерировать JavaScript код на стороне получателя и отправителя?
login8
Отправлено: 03 Октября, 2012 - 16:08:56
Новичок
Покинул форум
Сообщений всего: 34
Дата рег-ции: Февр. 2012 Откуда: Куба
Помог: 0 раз(а)
inqubus
inqubus пишет:
Никто не подскажет, как при личном сообщение генерировать JavaScript код на стороне получателя и отправителя?
Зачем код генерировать.?
Вообще это просто реализуется, возле ника при наведении делаешь выпадающее меню, а там кнопочка "приват" (у себя так сделал) ну или просто возле ника маленькую иконку "приват" если нехочешь или незнаешь как меню сделать.
А двойной клик это плохая затея, как ты обьясниш ползователю что нужно двойной клик делать по нику чтобы открылся приват? Некто к этому непривык. к двойным кликам . (Добавление) inqubus
С одтельным окошком переписки я бы не советовал делать, лучше сделай в общем окне.
на ajax просто переключать sendchat.php и sendprv.php
Потому что слишком много запросов будет и в чат и в приват.
Покинул форум
Сообщений всего: 13
Дата рег-ции: Окт. 2012
Помог: 0 раз(а)
Мне в любом случае надо реализовать аналог лички в отдельном окне. Как это можно сделать?
Okula
Отправлено: 08 Октября, 2012 - 23:46:26
Участник
Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010
Помог: 42 раз(а)
inqubus, создать html форму для отправки сообщений и выводить её в новом окне. Будь то фрейм или просто _target в ссылке.
inqubus
Отправлено: 11 Октября, 2012 - 22:10:56
Новичок
Покинул форум
Сообщений всего: 13
Дата рег-ции: Окт. 2012
Помог: 0 раз(а)
С этим разобрался, как сделать отправку сообщения только определенному пользователю, то есть чтобы видел его только отправитель и получатель. Никак не доходит программная часть
caballero
Отправлено: 11 Октября, 2012 - 22:14:53
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
ну так выбирать с БД только те которые он может видеть
какие проблеммы
Покинул форум
Сообщений всего: 13
Дата рег-ции: Окт. 2012
Помог: 0 раз(а)
Не понимаю, как это реализовать. То есть у меня допустим есть таблица message, в которой содержится сообщение. Поля допустим id, title, text, time, sender, reciever. Есть 2 юзера - А и В. Если в месседже в сендере будет А а в ресивере - Б, то показывать это только А и В? Что-то вроде этого?
inqubus
Отправлено: 12 Октября, 2012 - 07:11:03
Новичок
Покинул форум
Сообщений всего: 13
Дата рег-ции: Окт. 2012
Помог: 0 раз(а)
Еще вопрос: хочу сделать, чтобы при авторизации у пользователя в блоке висело "Вы вошли как user_name" и кнопка "Выход", при нажатии на которую шел апдейт поля базы, уничтожение сессии, рефреш страницы и вывод формы авторизации. В чем ошибся?
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.