[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: онлайн/оффлайн пользователи
Hugo_O
сделал таблицу со статусами, в которую добавляются пользователи, которые сейчас на сайте и УДАЛЯЮТСЯ(вся строка) после 30 секунд бездействия(пока что)
в общем с этим проблем не возникло.
+составил запрос

$authstateonline=mysql_query("UPDATE auth,states SET auth.state='online' WHERE auth.id=states.userid");

он обновляет статус на онлайн в основной таблице(auth), всем пользователем, которых нашел в таблице со статусами (states) (это необходимо)
теперь остается последний шаг
обновить статус всех пользователей в основной таблице на 'offline', id которых не присутствует в таблице со статусами.
попробовал так

$authstateoffline=mysql_query("UPDATE auth,states SET auth.state='offline' WHERE NOT auth.id IN states.userid");

не получилось( help!!

п.с нашел одно простое решение, поставить вот в таком порядке
$authstateoffline=mysql_query("UPDATE auth SET state='offline'");
$authstateonline=mysql_query("UPDATE auth,states SET auth.state='online' WHERE auth.id=states.userid");

но в любом случаи хочется узнать как искать неимеющиеся строки в таблице



Спустя 33 минуты, 5 секунд (19.06.2010 - 12:32) DeeKeiD написал(а):
Помойму проще сделать поле last_online в базе с юзерами и обновлять его


echo '<table width="100%">';
echo '<tr>';
echo '<td class="head1">На сайте</td>';
echo '</tr>';
echo '<tr>';
echo '<td class="body2">';
/* Обновление времени захода пользователя */
$loggedin = $_SESSION['user'];
$online = mysql_query("UPDATE `users` SET `last_online` = NOW() WHERE `login` = '". $loggedin ."'");
/* Вывод пользователей активных в течении 1й минуты */
$res = mysql_query("SELECT * FROM `users` WHERE `last_online` + INTERVAL 1 MINUTE > NOW()");
$row2 = mysql_fetch_array($res);
if($row2['id'] < 1) {
echo '<center>Нету пользователей онлайн</center>';
}
else
{
$res = mysql_query("SELECT * FROM `users` WHERE `last_online` + INTERVAL 1 MINUTE > NOW()");
while($row = mysql_fetch_array($res))
{
echo ' <img src="/images/flags/'.$row['country'].'.gif"> <a>'.$row['nickname'].'</a><br>';
}
}

echo '</td>';
echo '</tr>';
echo '</table>';

Спустя 1 минута, 45 секунд (19.06.2010 - 12:34) Basili4 написал(а):
неимеющиеся строки в таблице не найдутся потому что их нет а получить строки из табл2 которых нет в таблице1


SELECT
table2.*
FROM
table1,table2
WHERE
table1.id NOT IN (table2.id);

Спустя 5 минут, 42 секунды (19.06.2010 - 12:39) Hugo_O написал(а):
DeeKeiD
тоже способ, но я уже сделал иначе и тоже всего в 5-6 строк, впринципе меня сам мой метод устраивает, так что не вижу смысла передлывать!
Basili4
WHERE
table1.id NOT IN (table2.id);
вот как значит надо писать-то)) спасибо!!

Спустя 4 часа, 10 минут, 33 секунды (19.06.2010 - 16:50) Jallvar написал(а):
А как сделать к примеру. Пользователь вышел с сайта и записалось в бд что он не online, а offline

Спустя 1 час, 28 минут, 52 секунды (19.06.2010 - 18:19) Basili4 написал(а):
при logute т.е. при убийстве сессии убивай запись

Спустя 1 час, 25 минут, 29 секунд (19.06.2010 - 19:44) Jallvar написал(а):
Да я об этом уже думал. А если человек закроет браузер. т.е. сессии умрут а запись останется!
Быстрый ответ:

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