vist_ilya
Новичёк
Карма: 1
Сообщений: 13
|
 |
« : Июнь 20, 2008, 20:22:23 » |
|
Появился очень интересный вопрос. Каким образом организовать статус Online/Offline? Есть идея: При входе (логин) на форум изменять в БД значение например 0 на 1, а в коде написать что-то типа: $stat=mysql_query("SELECT ... WHERE `id` = '$posterid'"); $stat=mysql_fetch_array($stat); if ($stat[0] == "1"){ $content.="<br>Online<br>"; }
Вот, теперь вопрос, как сделать, чтобы значение Online (в БД это 1), через некоторое время бездействия юзера менялось на offline (0)?
|
|
|
Записан
|
И будет так!
|
|
|
B@c!fer
|
 |
« Ответ #1 : Июнь 20, 2008, 21:01:06 » |
|
на мой взгляд проще по дате.. mysql_query("SELECT ... FROM ... WHERE time > NOW() - INTERVAL '5' MINUTE");
time это название поля в таблице..
|
|
|
Записан
|
|
|
|
atimur
Просветлённый
  
Карма: 59
Сообщений: 990
Живу в SanCity
|
 |
« Ответ #2 : Июнь 20, 2008, 21:01:57 » |
|
Согранять еще временной дамп при логине. И например если прошло 15 минут ставить offline
|
|
|
Записан
|
|
|
|
vist_ilya
Новичёк
Карма: 1
Сообщений: 13
|
 |
« Ответ #3 : Июнь 20, 2008, 21:04:46 » |
|
WHERE time > NOW() - INTERVAL '5' MINUTE Вот с этого места поподробней плз...
|
|
|
Записан
|
И будет так!
|
|
|
Astraller™
|
 |
« Ответ #4 : Июнь 20, 2008, 21:06:46 » |
|
Я организовывал иначе. При открытии странички пользователем у него в базе записывается timestamp. А выбор активных пользователей производим: SELECT * FROM `users` WHERE `users`.`online` = (NOW()-MINUTE(5)); Кроме того убиваем зайца с определением последнего посещения пользователя 
|
|
|
Записан
|
Гамлета здесь больше нет. Осталась только тень. 
|
|
|
vist_ilya
Новичёк
Карма: 1
Сообщений: 13
|
 |
« Ответ #5 : Июнь 20, 2008, 21:09:21 » |
|
Извините за тупой вопрос, но подругому не могу. Начит я должен сделать, когда юзер логинится, timestamp и, судя по коду постоянно сверять его. Так?
|
|
|
Записан
|
И будет так!
|
|
|
B@c!fer
|
 |
« Ответ #6 : Июнь 20, 2008, 21:12:29 » |
|
вот то что предложил Astraller™ тебе даже больше подойдёт:)
тут чисто сравнение времён идёт NOW() содержит текущее время..а в поле у юзвера то время когда он залогинился и мы проверяем если наше время меньше того которое у пользователя + 5 минут(в данном случае)..то мы думаем что он ещё на сайте
|
|
|
Записан
|
|
|
|
Astraller™
|
 |
« Ответ #7 : Июнь 20, 2008, 21:12:57 » |
|
Извините за тупой вопрос, но подругому не могу. Начит я должен сделать, когда юзер логинится, timestamp и, судя по коду постоянно сверять его. Так?
Неа  Смотрите, в начале страницы, сразу после подключа к БД делаем <?php mysql_query("UPDATE `users` SET `online` = '".time()."' WHERE `id` = ".$_SESSION['user_id']); ?> А в том месте где надо вывести юзерей зопрашиваем их так: <?php $OnlineUsers=mysql_query("SELECT * FROM `users` WHERE `online` > ".(time()-15*60)); ?>
|
|
« Последнее редактирование: Июнь 20, 2008, 21:20:19 от Astraller™ »
|
Записан
|
Гамлета здесь больше нет. Осталась только тень. 
|
|
|
Astraller™
|
 |
« Ответ #8 : Июнь 20, 2008, 21:13:59 » |
|
тут чисто сравнение времён идёт NOW() содержит текущее время..а в поле у юзвера то время когда он залогинился и мы проверяем если наше время меньше того которое у пользователя + 5 минут(в данном случае)..то мы думаем что он ещё на сайте
Я делал через NOW(), но потом переделал так как написал выше, ибо с timestam'ом оказалось работать удобнее 
|
|
|
Записан
|
Гамлета здесь больше нет. Осталась только тень. 
|
|
|
B@c!fer
|
 |
« Ответ #9 : Июнь 20, 2008, 21:16:14 » |
|
да..но у timestam юниксовый формат даты..я с ним запутался)))
|
|
|
Записан
|
|
|
|
vist_ilya
Новичёк
Карма: 1
Сообщений: 13
|
 |
« Ответ #10 : Июнь 20, 2008, 21:17:20 » |
|
Ага!!! А я о чем говорил!!!! ВОТ:
Fatal error: Call to undefined function timestamp() in U:\home\php.zu\www\index.php on line 14
|
|
|
Записан
|
И будет так!
|
|
|
B@c!fer
|
 |
« Ответ #11 : Июнь 20, 2008, 21:19:07 » |
|
Ага!!! А я о чем говорил!!!! ВОТ:
Fatal error: Call to undefined function timestamp() in U:\home\php.zu\www\index.php on line 14
чёт не припомню чтобы ты об этом говорил))
|
|
|
Записан
|
|
|
|
vist_ilya
Новичёк
Карма: 1
Сообщений: 13
|
 |
« Ответ #12 : Июнь 20, 2008, 21:20:58 » |
|
Ну сказал же. Как бы вот еще ф-цию найти?... Или писать придеццо через date()?
|
|
|
Записан
|
И будет так!
|
|
|
Astraller™
|
 |
« Ответ #13 : Июнь 20, 2008, 21:21:08 » |
|
Fatal error: Call to undefined function timestamp() in U:\home\php.zu\www\index.php on line 14
Да-да-да  Попутал я функцию опять, нет функции timestamp, есть time() 
|
|
|
Записан
|
Гамлета здесь больше нет. Осталась только тень. 
|
|
|
Astraller™
|
 |
« Ответ #14 : Июнь 20, 2008, 21:21:46 » |
|
да..но у timestam юниксовый формат даты..я с ним запутался)))
Да ну.... самый удобный как по моему 
|
|
|
Записан
|
Гамлета здесь больше нет. Осталась только тень. 
|
|
|
vist_ilya
Новичёк
Карма: 1
Сообщений: 13
|
 |
« Ответ #15 : Июнь 20, 2008, 21:34:34 » |
|
Вцениваем! Спасибо всем, ели что, еще обращусь :-))
|
|
|
Записан
|
И будет так!
|
|
|
Astraller™
|
 |
« Ответ #16 : Июнь 20, 2008, 21:38:38 » |
|
Вцениваем! Спасибо всем, ели что, еще обращусь :-))
Спасибо это много, а вот + было бы в самый раз 
|
|
|
Записан
|
Гамлета здесь больше нет. Осталась только тень. 
|
|
|
B@c!fer
|
 |
« Ответ #17 : Июнь 20, 2008, 21:40:22 » |
|
криво работает)))
|
|
|
Записан
|
|
|
|
vist_ilya
Новичёк
Карма: 1
Сообщений: 13
|
 |
« Ответ #18 : Июнь 20, 2008, 21:42:45 » |
|
почему криво? Помоему нормально, я там один пока (уже?) сижу.
|
|
|
Записан
|
И будет так!
|
|
|
Astraller™
|
 |
« Ответ #19 : Июнь 20, 2008, 21:42:58 » |
|
криво работает)))
Что именно криво? 
|
|
|
Записан
|
Гамлета здесь больше нет. Осталась только тень. 
|
|
|
B@c!fer
|
 |
« Ответ #20 : Июнь 20, 2008, 21:43:25 » |
|
надо..это..время пользователя в базе обнавлять каждый раз как он на страничку зашёл
|
|
|
Записан
|
|
|
|
B@c!fer
|
 |
« Ответ #21 : Июнь 20, 2008, 21:44:14 » |
|
офф-топ::::::даёшь свободу YO-лкам!))))
|
|
|
Записан
|
|
|
|
vist_ilya
Новичёк
Карма: 1
Сообщений: 13
|
 |
« Ответ #22 : Июнь 20, 2008, 21:44:40 » |
|
Логично... Дык в функцию записать и все будет ок.
|
|
|
Записан
|
И будет так!
|
|
|
B@c!fer
|
 |
« Ответ #23 : Июнь 20, 2008, 21:46:31 » |
|
я не могу...ёлки прошли!!!!!!!!!)))))))))))))
|
|
|
Записан
|
|
|
|
Astraller™
|
 |
« Ответ #24 : Июнь 20, 2008, 21:46:37 » |
|
надо..это..время пользователя в базе обнавлять каждый раз как он на страничку зашёл
Ээээ, а от этого никак не уйдёшь  Все равно в базу каждый раз пишем  Только в данном случае убиваем двух зайцефф 
|
|
|
Записан
|
Гамлета здесь больше нет. Осталась только тень. 
|
|
|
|