ОБСУЖДЕНИЕ

Time

14 сообщений1 просмотровОткрыта
#1
Как то не имел дел много с временем,когда имел то все уже было в движке,но для написания нужно знать и понимать))
Потому вот хочу задать вопрос...

Есть запрос

mysql_query("UPDATE `users` SET `time`='".(time()+(3600*24*1))."' WHERE `id` = '".($user['id'])."'");

Вродь 24 часа тут))
Как сделать что написать что бы был отсчет до 0 ?)(Наверн функцию написать Time,пример бы...)
#2
Тебе нид что бы например осталось 12 часов 34 минуты ?
#3
Ну да например там вывожу осталось 5 часов,и время скапывало все ближе и ближе к 0 по времени)
#4
PHP
function time_autoformat($ts, $full = false){
  if($full){
        $d = ''; $t = $ts;
        $d1 = (floor($t/31622400)>0) ? floor($t/31622400) : '';
        $d2 = (floor($t/2635200)>0) ? floor($t/2635200) % 12 : '';
        $d3 = (floor($t/86400)>0) ? floor($t/86400) % 30 : '';
        $d4 = (floor($t/3600)>0) ? floor($t/3600) % 24 : '';
        $d5 = floor($t/60) % 60;
        if($d1) $d .= sklonen($d1,'год ','года ','лет ');
        if($d2) $d .= sklonen($d2,'месяц ','месяца ','месяцев ');
        if($d3) $d .= sklonen($d3,'день ','дня ','дней ');
        if($d4) $d .= sklonen($d4,'час ','часа ','часов ');
        if($d5) $d .= sklonen($d5,'минута  ','минуты ','минут ');
        return $d;
    } else {
        $sec = $ts;
        $min = round($ts/60);
        $hour = round($ts/3600);
        $days = round($ts/86400);
        $month = round($ts/2635200);
        $years = round($ts/31622400);    
        if($sec>60) return $sec.' сек.';    
        if($min<60) return $min.' мин.';    
        if($hour<24) return sklonen($hour,'час','часа','часов',false);    
        if($days<31) return sklonen($days,'день','дня','дней',false);    
        if($month<12) return sklonen($month,'месяц','месяца','месяцев',false); 
        else return sklonen($years,'год','года','лет',false);
    }
}    
 
function sklonen($n,$s1,$s2,$s3, $b = false){
    $m = $n % 10; $j = $n % 100;
    if($m==1) $s = $s1;
    if($m>=2 && $m<=4) $s = $s2;
    if($m==0 || $m>=5 || ($j>=10 && $j<=20)) $s = $s3;
    if($b) $n = '<b>'.$n.'</b>';
    return $n.' '.$s;
}
 

$us_time = mysql_result(mysql_query("SELECT `time` FROM `users`  WHERE `id` = '".($user['id'])."'"), 0) - time();
echo 'Оставшиеся время: '.time_autoformat($us_time);
#5
Valen, Спасибо))
#6
Valen, Все работает норм)Выводит в секундах но подточу под минуты)
#7
нужна функция дней, часов, минут, секунд, к примеру закоментируем ее -gtime
Не буду особо стараться с кодом
$us= mysql_query("SELECT * FROM `user` WHERE `id` = '$user[id]' LIMIT 1");
if(mysql_num_rows($us)==1){
$v = mysql_fetch_array($us);
$v[time] = $v[time]-time();
echo"<br>Осталось: ";
echo"".gtime($v[time])."";}
-------------
примерно так
#8
PowerHelper, Спасибо)
#9
echo 'Оставшиеся время: '.time_autoformat($us_time,1);
Попробуй так
#10
Valen, Секунды идут в низ,а значение в таблице стоит на месте ...
............................................................
Мне нужно типа как на ферме посадил репку она ростет 24 часа выросла в таблице тогда стает time ровно нулю)
#11
Сработало)
#12
Crank,
PHP


$us_time = mysql_result(mysql_query("SELECT `time` FROM `users`  WHERE `id` = '".($user['id'])."'"), 0) - time();

if($us_time<=0)
{
// Если репка выросла, обнуляем значение ее роста =))
mysql_query("UPDATE `users` SET `time`='0' WHERE `id` = '".($user['id'])."'"); 
}
else
{
// Если репка растет, пишем через сколько вырастет
echo 'Репка вырастит через: '.time_autoformat($us_time);
}
#13
Valen, Все спасибо все работает))Репка для примера :-D А так у меня яйца :-D
#14
Crank, с яйцами было б еще интереснее )))))