Time и 24 часа

1. Игорь (30.09.2009 / 21:23)
Всем привет!
Хочу реализовать для себя функцию банка, типа моторовского, но на БД
Впринцепи все зделал, без проблем, но остановился на одной проблемке, ето ограничение. Ну в смысле что б пользователь мог заберать вклад только один раз в день.
Поидее нужно создать полее типа time_vklad и потом сверять прошло ли уже сутки после того как юзер вложил деньги, или не прошло.
Задача, как узнать прошлоли сутки? Как реализовать данную штуку, и в каком формате записывать данные в поле time_vklad

2. Protus (30.09.2009 / 21:33)
время записывай в формате UNIX т.е. результат функции time()
соответсвенно
if(time()<$time_vklad+86400){
/*прошли сутки*/
}

3. Игорь (30.09.2009 / 21:37)
2, спасибочки, буду юзатьsmile

4. Protus (30.09.2009 / 21:47)
if(time()>$time_vklad+86400){
/*прошли сутки*/
}
очепятался)) вот так правильно, т.е. настоящее время больше чем время последнего вложения + 86400 секунд

5. Игорь (02.10.2009 / 17:13)
4, отлично, все работает, с меня аптека. Второй вопрос сюдаже, а как определить сколько осталось времени до снятия вклада. Тоесть например так: Вы можете снять вклад через 2 часа 30 минут

6. shurik (02.10.2009 / 17:22)
<?php $date=date('/*не помню что там*/');
$s = $time_vklad - $date // или наоборот;
echo "вы можете снять вклад через".$s;
ну примерно так
смысл думаю понятен

7. Игорь (02.10.2009 / 17:26)
'/*не помню что там*/' вот какраз етот момент меня и интересуетD

8. Neformat (02.10.2009 / 18:11)
$date=time(); - выдаст юникс дату (это к /*не помню что там*/)

9. Игорь (02.10.2009 / 18:30)
Блин не работает
делал так:
<?php $date=time();
$s = $time_vklad - $date;
echo "вы можете снять вклад через".$s;
выводит: вы можете снять вклад через-1254493749

10. Neformat (02.10.2009 / 18:46)
Ну во первых $time_vklad должна быть больше текущего времени на количество секунд, через которое можно снять вклад. Ищи ошибку при записи времени в переменную $time_vklad. Должно быть что то типа time()+время в секундах через которое снимается вклад
Во вторых $s ты получишь в секундах и уже придется юзать date("Осталось часов H минут i",$s);

11. Удаленный (02.10.2009 / 21:16)

$t = time () - 86400 ;
if ( $t > $vklad )
{
echo 'сутки прошли' ;
}
else
{
echo 'погоди еще'. round (time () - $vklad) * 60 * 60 , 2) .' часов' ;
}


12. Удаленный (02.10.2009 / 21:18)
Надеюсь написал без синтаксических ошибок?

13. Игорь (03.10.2009 / 14:47)
12 гдето ошибка есть, белая страница

14. Neformat (03.10.2009 / 14:49)
#13. Выключить игнор ошибок и посмотреть где она не пробовал?)
В предпоследней строке echo ""; - в кавычках а не апострофах должно быть

15. Игорь (03.10.2009 / 17:21)
14, не там ошибка, не хватало дужки после round
Но всеравно выводит не то что нужно:
погоди еще -309679200 часов

16. Игорь (03.10.2009 / 17:29)
mysql_query("UPDATE `user` SET `vklad`='$proc',`time_vklad`='".time()."'+'86400',`gorod_money`=`gorod_money`-'$num' WHERE `id`='".$user['id']."'");
P.S.Сори забыл что можно редактировать посты

17. Удаленный (03.10.2009 / 18:37)
Щас протестирую

18. Удаленный (03.10.2009 / 18:52)

$vklad = time() - 86000 ;
$t = time () - 86400 ;
if ( $t > $vklad )
{ echo 'сутки прошли' ;
} else
{ echo 'погоди еще '. round ((time () -$vklad) / 60 / 60, 1).' часов' ;
}

результат
погоди еще 23.9 часов


19. Удаленный (03.10.2009 / 18:57)
А в базу пишы просто
time() a $vklad = time() - 86400 ;
удали ето просто для проверки.

20. Игорь (03.10.2009 / 18:57)
19, благодарочка, сейчас затестю!

21. Игорь (03.10.2009 / 19:10)
19, спасибо, с меня плюс, увидим результат через час)

22. Удаленный (03.10.2009 / 19:46)
Спасибо.
А почему через час или ты поставил вместо 24 часов?

23. Игорь (04.10.2009 / 12:02)
ну как должно ж отображаться типа осталось 24 часа, потом 23 часа, и т.д.
Вообщема не робит, так и показывает
погоди еще 23.9 часов

24. Удаленный (05.10.2009 / 13:55)
там округление вечером напишу

25. Удаленный (05.10.2009 / 14:04)
там ето убери 1 строку ето по умолчанию -23.9 а в переменную $vklad ставь время с базы smile вечером сделаю вывод штоб не 23.9 а 23.56

26. Игорь (05.10.2009 / 14:17)
25, ааа там знаещь в чем фишка? Оно показывает не сколько осталось времени, а сколько прошло, а нужно сколько осталось)

27. Удаленный (05.10.2009 / 17:22)
стопудов поспешил вот все верно протестировал 7 раз написал 1 раз smile <?
$vklad = 1254746588 ;
$t = time () - 86400 ;
$time = $vklad - $t ;
//временой сдвиг так как у меня сервер зарубежый пишу + 5 часов
$time = $time + ( 5 * 60 * 60 ) ;
if ( $t > $vklad )
{ echo 'сутки прошли' ;
} else
{ echo 'погоди еще '. date("H",$time).' часов '. date("i",$time).' минуты.' ;
}
?>


28. Удаленный (05.10.2009 / 17:37)
остальное например окончание минуты минут часа часов возьми из функций вапмотора итак каждый римвол копировал и вставлял с шаблонов не хочет самсунг символы средину текста ставить вечером будет время усобершенствую. а воще тыже знаеш php почему сам не пишеш? когдато тема была грабер от гансика

29. Игорь (06.10.2009 / 17:24)
28, сенкс все пашет) Грабет ето фигня, 5-ти минутное дело что б научиться) php я учу только, и то только тогда когда время есть, постоянно на роботе.

URL: https://visavi.net/topics/1138