- Сообщения
- 280
- Реакции
- 46
Хочу сделать так, чтобы бонус можно было взять не через 24 часа, а после 00.00, т.е. как наступили новые сутки - кнопка бонуса опять появляется.
Создал переменную в бд пользователя bonus_time.
После нажатия на кнопку сбора бонуса присвоил ей значение текущего времени:
$db->Query("UPDATE db_users_b SET bonus_time = '".time()."' WHERE id = '$usid' LIMIT 1");
Перед функцией нажатия на кнопку поставил условие, что:
if (date("d")!=date("d",$user_data["bonus_time"])){ //(сравниваем текущую дату с датой, когда последний раз была нажата кнопка сбора бонуса)
появляется кнопка и можно собрать бонус;
} else echo "Вы уже получали сегодня бонус!"; // (т.е. если сегодняшняя дата и дата нажатия на кнопку не совпадают, то можно собрать бонус, если совпадают - то кнопки нет..)
Подскажите, я правильно мыслю? Меня просто смущает функция (date("d")!=date("d",$user_data["bonus_time"])) - я не силен пока в php, поэтому и спрашиваю. Это будет работать?
P.S. Делал функцию по аналогии с кодом, который нашел в интернете для cron на php
<?php
$cron_time=filemtime("cron_time"); //получаем время последнего изменения файла
if (date("d")!=date("d",$cron_time)) { //сравниваем день изменения файла с текущим
file_put_contents("cron_time",""); //перезаписываем файл cron_time
include "cron.php"; //выполняем скрипты из файла cron.php
}
?>
Создал переменную в бд пользователя bonus_time.
После нажатия на кнопку сбора бонуса присвоил ей значение текущего времени:
$db->Query("UPDATE db_users_b SET bonus_time = '".time()."' WHERE id = '$usid' LIMIT 1");
Перед функцией нажатия на кнопку поставил условие, что:
if (date("d")!=date("d",$user_data["bonus_time"])){ //(сравниваем текущую дату с датой, когда последний раз была нажата кнопка сбора бонуса)
появляется кнопка и можно собрать бонус;
} else echo "Вы уже получали сегодня бонус!"; // (т.е. если сегодняшняя дата и дата нажатия на кнопку не совпадают, то можно собрать бонус, если совпадают - то кнопки нет..)
Подскажите, я правильно мыслю? Меня просто смущает функция (date("d")!=date("d",$user_data["bonus_time"])) - я не силен пока в php, поэтому и спрашиваю. Это будет работать?
P.S. Делал функцию по аналогии с кодом, который нашел в интернете для cron на php
<?php
$cron_time=filemtime("cron_time"); //получаем время последнего изменения файла
if (date("d")!=date("d",$cron_time)) { //сравниваем день изменения файла с текущим
file_put_contents("cron_time",""); //перезаписываем файл cron_time
include "cron.php"; //выполняем скрипты из файла cron.php
}
?>
- Сообщения
- 280
- Реакции
- 46
mythphp
Местный
- Сообщения
- 74
- Реакции
- 9
- Сообщения
- 280
- Реакции
- 46
Да я все уже проверил - все работает! Так что можете брать пользоваться на здоровье!mythphp написал(а):Напиши в тех. поддержку своего хостинга, скажи мне надо сделать чтобы таблица бонус очищалась каждый день в 00:00, я думаю тебе помогут там. У меня такая же ситуация была, мне всё сделали мои хостеры за бесплатно конечно же
Elizim
Участник
- Сообщения
- 74
- Реакции
- 14
А можете выложить это как модуль, очень хочется установитьskroliks написал(а):Да я все уже проверил - все работает! Так что можете брать пользоваться на здоровье!
voodooas
Участник
- Сообщения
- 21
- Реакции
- 7
voodooas
Участник
- Сообщения
- 21
- Реакции
- 7
Небольшая разница есть, к примеру сегодня те получил бонус в 8 утра, завтра ты попал к компу в 12 дня, а после завтра 19, на следующий день ты не сможешь получить бонус в любое время, а только после 19 часов. В итоге один день может вылететь. Это нужно если хочется пользователям дать больше свободы - получить бонус когда ему удобно.
Хм... Ну разве что только это. Задумка хорошая, мне нравится.voodooas написал(а):Небольшая разница есть, к примеру сегодня те получил бонус в 8 утра, завтра ты попал к компу в 12 дня, а после завтра 19, на следующий день ты не сможешь получить бонус в любое время, а только после 19 часов. В итоге один день может вылететь. Это нужно если хочется пользователям дать больше свободы - получить бонус когда ему удобно.
Если он 24 часа не был за ПК, то пропустит.VladL написал(а):А кто пропустит 0:00 бонус 24 чача ждать ???
Так то по сути есть 24 часа на получение. Т.е. время любое.
Не так как с 20:00 до 20:00 допустим. А к компу подошел в 19:00, до бонуса далеко и лег спать Все! Бонус пропустил. А после 00:00 вроде как универсальнее метод.
- Сообщения
- 280
- Реакции
- 46
Какой толк от db_bonus_list (date_add), если там просто записывается дата в формате 1247827417? А в моем способе когда собрал бонус - заносится именно текущая дата (число) и это от 1 до 31 - совсем разные значения..voodooas написал(а):Зачем добавлять в таблицу db_users_b еще одну колонку (загружать ее) если она есть в db_bonus_list (date_add) а в целом задумка не плохая. Можно такое же использовать на выплатах.
Remdev
Участник
- Сообщения
- 77
- Реакции
- 19
Ну вариант не самый продуманный и не самый изящный(например, человек который получал бонус, а потом месяц не заходил, бонус получить сразу не сможет). Лучше бы вытаскивал время получения последнего бонус из db_bonus_list и там уже смотрел.skroliks написал(а):Какой толк от db_bonus_list (date_add), если там просто записывается дата в формате 1247827417? А в моем способе когда собрал бонус - заносится именно текущая дата (число) и это от 1 до 31 - совсем разные значения..
Код:
if(date('Ymd',$date_add)!=date('Ymd')) {
/* Начисляем бонус */
} else {
/* Говорим, что бонус уже начисляли */
}
- Сообщения
- 280
- Реакции
- 46
Хороший вариант! Только я искал это все еще пол года назад и тогда совсем еще толком ничего не знал и не умелRemdev написал(а):Ну вариант не самый продуманный и не самый изящный(например, человек который получал бонус, а потом месяц не заходил, бонус получить сразу не сможет). Лучше бы вытаскивал время получения последнего бонус из db_bonus_list и там уже смотрел.
Код:if(date('Ymd',$date_add)!=date('Ymd')) { /* Начисляем бонус */ } else { /* Говорим, что бонус уже начисляли */ }
А сейчас такие вопросы даже не возникают в голове ибо задачки уже намного сложнее..