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

Там все секунди. Я зделал как надо. Спасиба