Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 7 Ответов
  • 3183 Просмотров
*

selimoff

  • Захожу иногда
  • 243
  • 16 / 0
  • heads up!!!
Запрос (SQL) в БД user status online
« : 17.06.2009, 00:15:02 »
Здравствуйте,
Хотел знать если возможно сделать запрос в БД, чтобы получить Пользователя статуса онлайн, типа:
Код
ALTER TABLE `jos_users` ADD `userstatusonline` VARCHAR( 255 ) NOT NULL ;
заранее спасибо
JNavigation скачать Здесь
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Запрос (SQL) в БД user status online
« Ответ #1 : 17.06.2009, 00:21:36 »
Погодь, описанный тобой запрос просто добавляет колонку в таблицу пользователей. Никакого отношения к текущему состоянию пользователя он не имеет.

Чтобы получить информацию о том, на сайте ли пользователь нужен вот такой запрос:

Код: php
$db = JFactory::getDBO();
$db->setQuery('SELECT COUNT(*) FROM #__session WHERE userid = ' . $userid);
$online = $db->loadResult();

При этом в переменной $userid должен быть идентификатор интересующего нас пользователя, а в переменную $online вернется 0 или 1 в зависимости от того, на сайте он или нет. Если быть более точным, то это будет означать жива ли его сессия на сайте или нет. Сам-то он мог уже уйти, но сессия еще некоторое время живет. Но точнее не узнать...
*

selimoff

  • Захожу иногда
  • 243
  • 16 / 0
  • heads up!!!
Re: Запрос (SQL) в БД user status online
« Ответ #2 : 17.06.2009, 00:30:40 »
Привет, Сергей!
Погодь, описанный тобой запрос просто добавляет колонку в таблицу пользователей. Никакого отношения к текущему состоянию пользователя он не имеет.
Да, это точно! хотел догадаться :)
а такой запрос куда и как вставить чтобы заработала?
спасибо
JNavigation скачать Здесь
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Запрос (SQL) в БД user status online
« Ответ #3 : 17.06.2009, 00:34:48 »
Хм, куда вставить это уж тебе видней, я ж не знаю задачи. Или это ты все про статус пользователя в комментариях? Ну тогда проще всего вставить прямо в шаблон, в tpl_comment.php. Текущего пользователя возьмешь в переменной $comment->userid. А в зависимости от значения переменной $online в нижеприведенном коде выведешь либо разные картинки, либо надписи разные.

Единственный минус такой реализации заключается в том, что во-первых, для гостей это работать не будет, а во-вторых, это увеличит количество запросов к БД на страницу. Т.е. если у нас на странице окажется 100 комментариев, появится 100 дополнительных запросов. Так как для каждого комментария это будет выполняться.

Как обойти? Сходу не знаю. Надо подумать. Чисто технически можно пойти тем же путем, что я реализовывал аватары. Т.е. выполнять такой запрос всего один раз для всех пользователей в списке. На пальцах объяснить сложно. Появится минутка времени - попробую накидать пример.
*

selimoff

  • Захожу иногда
  • 243
  • 16 / 0
  • heads up!!!
Re: Запрос (SQL) в БД user status online
« Ответ #4 : 17.06.2009, 00:41:54 »
Спасибо master!
тогда лучше ничего не буду трогать!
Если будут столько дополнительных запросов, думаю не стоит.
ну что, буду ждать :)
еще раз спасибо за объяснение!
JNavigation скачать Здесь
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Запрос (SQL) в БД user status online
« Ответ #5 : 17.06.2009, 14:15:24 »
selimoff - помнишь задачу, где ты решал добавление в комментарии данных из таблицы пользователей - вот в тот же самый глобальный SQL запрос и добавляй JOIN #__session и в выборку нужный параметр
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Запрос (SQL) в БД user status online
« Ответ #6 : 17.06.2009, 14:20:58 »
вот в тот же самый глобальный SQL запрос и добавляй JOIN #__session и в выборку нужный параметр
только не JOIN, а LEFT JOIN... иначе отвалятся комментарии от гостей или отсутствующих на сайте пользователей
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Запрос (SQL) в БД user status online
« Ответ #7 : 17.06.2009, 14:35:40 »
только не JOIN, а LEFT JOIN...
согласен :)
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

как через AJAX запрос получить только данные из функции, без HTML кода?

Автор lottis

Ответов: 7
Просмотров: 3412
Последний ответ 26.03.2012, 02:40:54
от lottis
[Demo] Модуль QContacts online in Skype (или Кто онлайн в Скайпе)

Автор Виталик

Ответов: 4
Просмотров: 5543
Последний ответ 11.06.2010, 23:22:39
от Виталик
SELECT запрос с поиском среди параметров в стиле ini-файлов (поля params или attribs)

Автор enshtein

Ответов: 1
Просмотров: 1777
Последний ответ 14.02.2010, 12:20:54
от enshtein
SQL запрос

Автор ershovdz

Ответов: 5
Просмотров: 1814
Последний ответ 29.06.2009, 15:34:34
от beliyadm