Vampisja » 2009.11.04 20:50 |
Ну так как запись время в секундах? Где дыра? Добавлено спустя 2 минуты 32 секунды: Непойму как записать время пользователя скока он провел в чате Может както так например: щас time 20:53:23 = запись в строку +timeschat код http://kento.ru/download/zip.php?action=preview&dir=chatu&arch=Chat_mod_by_vipsds.zip&open=info.php&start=0& |
Gemorroj » 2009.11.04 21:12 |
после регистрации записываешь в бд timestamp далее при каждом новом обовлении страницы смотришь этот timestamp и если он, скажем, на 5 минут меньше текщего timestamp, то обновляешь его на текущий. если же меньше, то добавляешь в БД разницу между текущим таймштампом и таймштампом в БД. т.е. примерно так UPDATE table SET online = online + time() - $time; у тебя будет 2 записи - с таймштампом и временем онлайн. |
Vampisja » 2009.11.04 22:05 |
А так будет работать //VREMJA $update = mysql_query("UPDATE `chat_users` SET `timeschat` = `timeschat` + IF(NOW()-`timesob` < 300, NOW()-`timesob`, 0), `timesob` = NOW() WHERE `id` = '".$id."';"); //END VREMJA Добавлено спустя 3 минуты 47 секунд: поле `timeschat` (INT) -показывает сколько секунд юзер в онлайн `timesob`(TIMESTAMP) - время послед. обновления юзера по условию, если юзер обновлялся не позже 5 минут назад, добавить разницу. |
Gemorroj » 2009.11.04 22:32 |
хз, попробуй. |
Vampisja » 2009.11.05 03:19 |
Все записавает в БД, ТАПЕР как секунди вивести чтоб перевести в дни, часы, минуты, секунды, так Пользователь провел на сайте 2 дней 5 часов 15 минут 23 секунд |
Fuelen » 2009.11.05 08:42 |
Выдрал из своего сайта. Думаю поймёш. $tmp_num=explode('.',$an['alltime']/60); $m=$tmp_num[0];$an['alltime']=$an['alltime']-(60*$tmp_num[0]); $tmp_num=explode('.',$m/60); $ch=$tmp_num[0];$m=$m-(60*$tmp_num[0]); $tmp_num=explode('.',$ch/24); $d=$tmp_num[0];$ch=$ch-(24*$tmp_num[0]);
echo 'Перебував на сайті протягом '.$d.' днів '.$ch.' годин '.$m.' хвилин та '.$an['alltime'].' секунд<br/>'; |
Gemorroj » 2009.11.05 09:53 |
нееее, это маразм. есть php функция strtotime и есть SQL функция UNIX_TIMESTAMP пляши от какой-нибудь из них. |
Vampisja » 2009.11.05 14:30 |
Я писал код $timevremja = explode('.',$an['alltime']/60); $m = $timevremja[0]; $an['alltime'] = $an['alltime'] - (60*$timevremja[0]); $timevremja = explode('.',$m/60); $ch = $timevremja[0]; $m = $m - (60*$timevremja[0]); $timevremja = explode('.',$ch/24); $d=$timevremja[0]; $ch = $ch - (24*$timevremja[0]); echo "Перебував на сайті протягом ".$d." днів ".$ch." годин ".$m." хвилин та ".$an ['alltime']." секунд<br/>\n"; но везде нули дне 0 часов 0 и т.д Добавлено спустя 3 минуты 38 секунд: В БД записую так //TIME $update = mysql_query("UPDATE `chat_users` SET `timevremja` = `timevremja` + IF(NOW() - `timesob` < 300, NOW() - `timesob`, 0), `timesob` = NOW() WHERE `id` = '".$id."';"); //END TIME Добавлено спустя 7 минут 18 секунд: В бд вот такие timevremja ANT(11) timesob IMESTAMP |
Vampisja » 2009.11.05 19:41 |
Отвесь? |
Gemorroj » 2009.11.05 21:13 |
какой вопрос? |
Vampisja » 2009.11.05 23:10 |
Я пишу такой код $hous = floor ($timevremja / 3600); $mins = floor ($timevremja / 60); $secs = $timevremja % 60; часов $hous минут $mins секунд $secs все виводит нормально така минути идут за 60. Например часов 2 минут 129 секунд 51 Добавлено спустя 1 минуту 3 секунды: Ету строку нужна както не так писать $mins = floor ($timevremja / 60); |
Gemorroj » 2009.11.05 23:26 |
что у тебя в переменной $timevremja ? |
Vampisja » 2009.11.06 00:31 |
Там все секунди. Я зделал как надо. Спасиба |