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 :: Личные сообщения в чате

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
inqubus
Отправлено: 01 Октября, 2012 - 00:23:07
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




Доброго времени суток, требуется Ваша помощь.

Занимаюсь реализацией своего чата, т.к. хочу попрактиковаться в написании скриптов. Использую связку PHP+MySQL+немного AJAX. Запись сообщений ведется в базу.

Проблема со следующим - нужно реализовать личные сообщения, например при двойном нажатии на имя пользователя в списке онлайн будет открываться окошко личной переписки. Уже довольно продложительное время ломаю голову - как реализовать таблицы для личных сообщений в базе и в принципе, как реализовать? Растерялся

Заранее спасибо откликнувшимся!
 
 Top
vanicon
Отправлено: 01 Октября, 2012 - 01:13:21
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




Цитата:
Запись сообщений ведется в базу.

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


-----
Так было, так есть и так будет
 
 Top
DeepVarvar Супермодератор
Отправлено: 01 Октября, 2012 - 01:14:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




добросить два поля в сообщухи: from и to, если to не заполнено, значт всем, если заполнено, то известно кому.
(Добавление)
vanicon принимающий тоже должен мочь читать истрию - поэтому 2 поля.
 
 Top
inqubus
Отправлено: 01 Октября, 2012 - 02:06:39
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




Непонятно еще как быть с отображением. Например: личное сообщение не просто выделяется цветом в общем чате - а создается отдельное окно для лички. И кстати, как можно при новой личке генерировать html код? Не подскажете?
 
 Top
vanicon
Отправлено: 01 Октября, 2012 - 02:13:44
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




Цитата:
личное сообщение не просто выделяется цветом в общем чате - а создается отдельное окно для лички.

Ну так выбирайте из таблицы сообщений, и смотрите где там личка там в окно выделяете или еще что...
Цитата:
И кстати, как можно при новой личке генерировать html код? Не подскажете?

Если я правильно понял то речь идет о автообновлении при ожидание личного сообщения.
Тут можно ajax'om пинать запросы на сервер, и выбирать новые сообщения.


-----
Так было, так есть и так будет
 
 Top
inqubus
Отправлено: 01 Октября, 2012 - 02:18:24
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




vanicon пишет:
Тут можно ajax'om пинать запросы на сервер, и выбирать новые сообщения.


Выбирать это да, а как лучше реализовать к примеру:

пользователь А пишет приват пользователю Б
происходит запись сообщения в базу и вывод из базы
генерируется окошко приватного чата

Непонятно с реализацией последнего пункта Огорчение
 
 Top
Alho
Отправлено: 01 Октября, 2012 - 05:49:12
Post Id



Посетитель


Покинул форум
Сообщений всего: 322
Дата рег-ции: Апр. 2012  


Помог: 11 раз(а)




Это достаточно простая задача. Если возникают проблемы с реализацией - скачайте пару чатов - рассмотрите конкретные реализации.
 
 Top
inqubus
Отправлено: 01 Октября, 2012 - 17:39:24
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




Никто не подскажет, как при личном сообщение генерировать JavaScript код на стороне получателя и отправителя?
 
 Top
login8
Отправлено: 03 Октября, 2012 - 16:08:56
Post Id



Новичок


Покинул форум
Сообщений всего: 34
Дата рег-ции: Февр. 2012  
Откуда: Куба


Помог: 0 раз(а)




inqubus
inqubus пишет:
Никто не подскажет, как при личном сообщение генерировать JavaScript код на стороне получателя и отправителя?

Зачем код генерировать.?
Вообще это просто реализуется, возле ника при наведении делаешь выпадающее меню, а там кнопочка "приват" (у себя так сделал) ну или просто возле ника маленькую иконку "приват" если нехочешь или незнаешь как меню сделать.
А двойной клик это плохая затея, как ты обьясниш ползователю что нужно двойной клик делать по нику чтобы открылся приват? Некто к этому непривык. к двойным кликам .
(Добавление)
inqubus
С одтельным окошком переписки я бы не советовал делать, лучше сделай в общем окне.
на ajax просто переключать sendchat.php и sendprv.php
Потому что слишком много запросов будет и в чат и в приват.

(Отредактировано автором: 03 Октября, 2012 - 17:08:37)

 
 Top
inqubus
Отправлено: 08 Октября, 2012 - 23:33:19
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




Мне в любом случае надо реализовать аналог лички в отдельном окне. Как это можно сделать?
 
 Top
Okula
Отправлено: 08 Октября, 2012 - 23:46:26
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




inqubus, создать html форму для отправки сообщений и выводить её в новом окне. Будь то фрейм или просто _target в ссылке.
 
 Top
inqubus
Отправлено: 11 Октября, 2012 - 22:10:56
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




С этим разобрался, как сделать отправку сообщения только определенному пользователю, то есть чтобы видел его только отправитель и получатель. Никак не доходит программная часть Огорчение
 
 Top
caballero
Отправлено: 11 Октября, 2012 - 22:14:53
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




ну так выбирать с БД только те которые он может видеть
какие проблеммы


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
inqubus
Отправлено: 12 Октября, 2012 - 04:57:05
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




Не понимаю, как это реализовать. То есть у меня допустим есть таблица message, в которой содержится сообщение. Поля допустим id, title, text, time, sender, reciever. Есть 2 юзера - А и В. Если в месседже в сендере будет А а в ресивере - Б, то показывать это только А и В? Что-то вроде этого?
 
 Top
inqubus
Отправлено: 12 Октября, 2012 - 07:11:03
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




Еще вопрос: хочу сделать, чтобы при авторизации у пользователя в блоке висело "Вы вошли как user_name" и кнопка "Выход", при нажатии на которую шел апдейт поля базы, уничтожение сессии, рефреш страницы и вывод формы авторизации. В чем ошибся?

index.php
PHP:
скопировать код в буфер обмена
  1. <table border='1' width='100%'>
  2.                 <tr>
  3.                         <td width='1050px'>баннер</td>
  4.                         <td width='250px' height='150px'>
  5.                                
  6.                                 <?PHP
  7.     // Проверяем, пусты ли переменные логина и id пользователя
  8.     if(empty($_SESSION['login']) or empty($_SESSION['id'])){
  9.                 include "aut.html"; // форма авторизации
  10.     }else{
  11.     // Если не пусты, то мы выводим ссылку
  12.     echo "Вы вошли на сайт, как ".$_SESSION['login']."";
  13.         ?>
  14.         <p><button action='' onclick='logout.php'>Выход</button></p>
  15.         <?PHP
  16.          
  17.     }
  18.     ?>
  19.                                        
  20.                                
  21.                         </td>
  22.                 </tr>
  23.         </table>


logout.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.         session_start();
  3.         require "bd.php";
  4.        
  5.         mysql_query("UPDATE users SET online = 0 WHERE id = {$_SESSION['id']}");
  6.         session_destroy();
  7.         header("Location: index.php");
  8. ?>
  9.  


UPDATE: С этим разобрался, спасибо

(Отредактировано автором: 12 Октября, 2012 - 21:41:13)

 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« HTTP и PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB