[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод онлайн юзеров и переписка между ними
N0ob
Я сделал блок, в котором выводят онлайн юзеров. JS каждые 2 секунды посылает запрос к БД, и вытаскивает юзеров. Далее JS запихивает юзеров в таблицу, а эту таблицу в блок с онлайн юзерами. Тут проблем нет. Щас будем подбираться к проблеме поближе. По клику на онлайн юзера, под этим юзером вылазит форма и история переписки, но сразу же исчезает. Думаю догадались почему))) Потому что JS обновил блок с онлайн юзерами при возвращении из запроса юзеров. Как мне сделать так, что бы и юзеры выводились, и каждые 2 секунды форма и история переписки не исчезала?
Guest
N0ob вынести форму в отдельный внешний независящий от списка онлайн div
Игорь_Vasinsky
best answer!

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
inpost
N0ob
отдельными блоками хранить переписку и пользователей.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
N0ob
inpost, Guest в том то и дело, что так нельзя. Я вывожу список юзеров онлайн. В этих списках, так же есть сама история переписки и форма для ввода сабжа. При клике на юзера, эта история и переписка показывается(а так она скрыта). Отдельно это никак не сделать. Хотел сделать как в ВК, но не мне немного не понравилось)
Игорь_Vasinsky
ты обновляешь содержимое элемента - что ты хотел?))

записывай позицию содерижмого, состояния открытых диалогов на клиенте



_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
N0ob
Щас переварю все что ты сказал, и попробую сделать)))
Игорь_Vasinsky
вообще может даже json или сериализованный массив с настройками этими гонять на сервер и обратно
при выводе ловить всё и рисовать как надо

а вообще - сессии или куки наверно - чем гонять данные туда-сюда

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
inpost
N0ob
ты данные храни не в блоке, а в массиве. А в блок выводи данные. Клик - вывод данных из массива. Так как аякс у тебя изменит лишь массив с юзерами, то массив с сообщениями трогать не будет.

В целом, надо разделять данные, а не превращать всё в общую кашу.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Игорь_Vasinsky
да, мне тоже этот вариант больше нравится

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
N0ob
inpost я думаю вот как. При выборке записать все id юзеров в массив, и так же записать id с тем, с кем я переписываюсь. При повторном запросе мы сравниваем id который вернул запрос, и id которые мы записали в массив. Если в массиве нету id тех юзеров, которые есть в массиве из предыдущего запроса, значит эти юзеру офнулись и мы удаляем их из списка, ну а если офнулся и тот, с кем я переписывался, просто указать что он офнулся, но не сворачивать диалог. Далее мы просто перепроверяем массив с текущего запроса и опять же с тем, который вернулся к нам из прошлого запроса. А проверяем мы его на новых юзеров. Вдруг кто то зашел, и так же обновляем список, не трогая активный диалог(если есть таковой). Как вам?
inpost
Сложно словить мысль. Реализуй и посмотри как работает.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
123456
К примеру у тебя получился такой блок с пользователями:


<div id="messageUser"></div>
<div
id="online">
<div
onClick="message(`id1`)">Логин 1</div>
<div
onClick="message(`id2`)">Логин 2</div>
<div
onClick="message(`id3`)">Логин 3</div>
</div>



При клике на логин выполняется ф-ция, которая через ajax делает запрос в бд и выводит тебе переписку с данным пользователем в <div id="messageUser"></div>
123456
При обновлении Онлайн пользователей обновится только блок <div id="online"></div>, а переписка так и останется открытой, т.к. блок <div id="messageUser"></div> не изменится
Быстрый ответ:

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