Всем привет!!! В общем написать вывод онлайн юзеров из БД, по полю lastvisit. Формат времени таков: y-m-d h:i:s. Нужно вывести всех юзеров, у которых поле lastvisit отличается от текущего времени максимум на 10 сек. Как это сделать?
DedMorozzz
16.01.2014 - 17:37
WHERE `datetime` >= NOW( ) - INTERVAL 10 SECOND
_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
DedMorozzz не работает. Ошибок не выдает, но и не вытаскивает юзеров(
DedMorozzz
16.01.2014 - 17:48
N0ob, покажи запрос. У себя проверил - работает
_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
SELECT `fg5k_users`.`name`, `fg5k_users`.`lastname`, `fg5k_users`.`avatar`, `fg5k_users`.`id` FROM `fg5k_users` LEFT JOIN `fg5k_friends` ON `fg5k_friends`.`id_user`=`fg5k_users`.`id` or `fg5k_friends`.`id_friend`=`fg5k_users`.`id` WHERE (`fg5k_friends`.`id_user`='".(int)$_SESSION['id']."' or `fg5k_friends`.`id_friend`='".(int)$_SESSION['id']."') AND `fg5k_users`.`id` != '".(int)$_SESSION['id']."' AND `fg5k_users`.`lastvisit` >= NOW() - INTERVAL 10 SECOND
Пробовал убрать
AND `fg5k_users`.`lastvisit` >= NOW() - INTERVAL 10 SECOND все вывело, с ним не выводит!
DedMorozzz
16.01.2014 - 17:55
может нЕкого выбирать? Поставь не 10 сек, для теста, а 100000
И локализируй выборку. Просто в 1й таблице ласт визит сделай запрос. Без джоина. Отработает как надо - уже делай джоины
_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
inpost
16.01.2014 - 17:56
N0obа там точно есть за последние десять секунд ? Поставь нечто вроде 1 минуту и проверь.
У тебя там точно в lastvisit идёт время из Mysql? На сервере время синхронизировано?
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
inpost поставил на 60 секунд все так же. Время в БД записывается правильно.
DedMorozzz
16.01.2014 - 18:04
Цитата (N0ob @ 16.01.2014 - 16:59) |
Время в БД записывается правильно. |
Правильно это как?
Инпост задал вполне правильный вопрос - откуда в БД время попадает?
_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
killer8080
16.01.2014 - 18:08
N0obтип поля точно DATETIME?
И не пиши запрос в одну строку, невозможно же читать
SELECT `u`.`name`, `u`.`lastname`, `u`.`avatar`, `u`.`id`
FROM `fg5k_users` `u`
LEFT JOIN `fg5k_friends` `f` ON `f`.`id_user`=`u`.`id` OR `f`.`id_friend`=`u`.`id`
WHERE
(`f`.`id_user`=".(int)$_SESSION['id']." OR `f`.`id_friend`=".(int)$_SESSION['id'].") AND
`u`.`id` != ".(int)$_SESSION['id']." AND `u`.`lastvisit` >= NOW() - INTERVAL 10 SECOND
Каждую секунду я посылаю аякс запрос на выборку этих юзевров, и обновляю поле lastvisit на date("y-m-d h:i:s")
DedMorozzz
16.01.2014 - 18:11
Цитата (N0ob @ 16.01.2014 - 17:09) |
обновляю поле lastvisit на date("y-m-d h:i:s") |
Другими словами в БД хранится время с ПХП.
Теперь 2й вопрос, который уже был озвучен. А время пхп == времени мускула?
сделай SELECT NOW() и date()
_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
Цитата |
тип поля точно DATETIME? |
Да
Цитата |
Теперь 2й вопрос, который уже был озвучен. А время пхп == времени мускула? |
Вот этого я не знаю
Цитата |
сделай SELECT NOW() и date() |
Сейчас сделаем
bestxp
16.01.2014 - 18:20
а вопрос, а зачем ты отправляешь пыховое время?
Оптимальнее было бы использовать now() в бд
ИМХО всё что может сделать БД пусть она и делает)
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.