Здарова всем.
Я со Временем не дружу и поэтому нужна элементарная помощь:
Нужно например чтоб через каждую секунду, минуту или же часов уходило определённое количество например жизней(Не важно чего, главное чтоб минусовалось)
з.ы. Со временем*
#2
можно через сесссию, через БД, через куки, в общем много способов
вот пример через сессию:
CODE
if($_SESSION['time'] < time()){# тут код который выполняем# записываем в сессию через какое время должен выполнится код$_SESSION['time'] = time()+60; // это через минуту выводнится}
Таким же образом можно записывать не в сессию а в файл, в куки, в сессию и тд.
#3
Valen, Извиняюсь, забыл дополнить, мне бы через БД лучше показать.
#4
GoRaS, ну лишний запрос к БД тоже не гуд..
но если все таки через БД надо то вот
SQL
if(mysql_result(mysql_query("SELECT `time` FROM `название таблицы` WHERE `id`='1'"),0) < time()){# тут код который выполняем# записываем в сессию через какое время должен выполнится кодmysql_query ("UPDATE `название таблицы` SET `time`='".(time()+60)."' WHERE `id`='1'");}
#5
Valen, Спасибо тебе огромное, очень помог.
#6
GoRaS, пожалуйста..
#7
Хм... полезненько. Скачаю пожалуй.
#8
Valen, Я не догоняю или чё...
Поставил всё как ты велел(Через сессии) Вроде уходило всё так, как надо, зашёл сегодня, но число осталось прежнем, т.е отсчёт времени не шёл пока я был оффлайн
#9
GoRaS, что то не понял тебя...
Если нужно например что бы через каждые например 60 сек производилось какое то действие (начисление жизней например) то это надо ставить на крон..
#10
а код что давал работает так:
Например пользователь зашел на сайт, ему написало "Привет", после обновления страницы надпись исчезла. Сколько бы пользователь не обновлял страницу, надпись не появится так как это не влияет. А надпись появится только после истечения 60 сек (ну или какое поставишь время)
Получается 60 сек прошло, надпись сново появилась, и после обновления следующего, сново на 60 сек исчезла
#11
Valen, Вот смотри: У меня типо тамогочи, есть питомец, надо что например через каждые 1-2 мин уходило по одной единице жизней(Не важно, обновлял юзер страницу или нет)
#12
А на счёт записи, по тестам я понял уже
#13
ну тут можно 2 способами:
1) Самый простой способ просто поставить выполнение скрипта на cron
2) Подсчитываем время с момента когда пользователь последний раз кормил (например, или какие там факторы влияют на повышение здоровья) до этого времени. Потом это значение переодиш в мин и умножаеш на количество здоровья которое снимается за 1 мин , результат минусуешь от здоровья покемона.
Примерно так смотрится:
PHP
# Узнаем время последнего корма$time_korm = mysql_result(mysql_query("SELECT `time_korm` FROM `pokemon` WHERE `id`='".(int)$_GET['id_pokemon']."'"),0);# Вычисляем время прошедшее с момента последнего корма $time_dif = time() - $time_korm;# Подсчитываем минуты и преобразовуем результат в целое число. $time_dif = intval($time_dif / 60);# Подсчитываем сколько жизней надо снимать$a = 1; // единицы жизней которые снимаются за 1 мин$minus_life = $time_dif * $a;# Записываем значение в БДmysql_query ("UPDATE `pokemon` SET `life`=`life`-".$minus_life ." WHERE `id`='".(int)(int)$_GET['id_pokemon']."'");
Что бы запросы не выволнялись при каждом обновлении и этим самым не возникало лишних запросов в БД, образуем таймер, как писал выше.
В итоге получается такой код:
PHP
# Проверяем прошла ли минута после последнего запросаif($_SESSION['time'] < time()){# Узнаем время последнего корма$time_korm = mysql_result(mysql_query("SELECT `time_korm` FROM `pokemon` WHERE `id`='".(int)$_GET['id_pokemon']."'"),0);# Вычисляем время прошедшее с момента последнего корма $time_dif = time() - $time_korm;# Подсчитываем минуты и преобразовуем результат в целое число. $time_dif = intval($time_dif / 60);# Подсчитываем сколько жизней надо снимать$a = 1; // единицы жизней которые снимаются за 1 мин$minus_life = $time_dif * $a;# Записываем значение в БДmysql_query ("UPDATE `pokemon` SET `life`=`life`-".$minus_life ." WHERE `id`='".(int)(int)$_GET['id_pokemon']."'");# записываем в сессию через какое время может выполнится код$_SESSION['time'] = time()+60;}
#14
Очень полезно и для ознакомления.
Спасибо тебе огромное.