我有一个会员资格,每个用户每30天获得100学分。所有会员资格均提前一至无限个月预付。
我想重置信用余额每30天回到100无论用户是否使用他的信用。我不想使用任何cronjob或类似的东西。我想简单地检查一下用户何时登录网站,如果他已经在当前30天的时间间隔登录,如果没有重置他的信用余额。
我在数据库中有一个成员资格到期日期和他上次登录的时间戳。
有人能给我一个计算公式吗?
到目前为止:

$days = ($paid_until - $today) / 60 / 60 / 24;
$months = $days / 30;

echo "<pre>
Expires/ Renews in Days: $days
Expires/ Renews in Months: $months

最佳答案

我是这么想的。伪代码,可以轻松转换为PHP(未测试):

start transaction
if (last_reset_date not null)
{
    days_since_reset = last_reset_date
}
else
{
    // Handle the case where no reset has yet been performed
    days_since_reset = now - sign_up_date
    update last_reset_date to sign_up_date
}

months = floor(days_since_reset / 30)
if (months >= 1)
{
    // Add in a reset for every missing month
    for(month = 1 to months)
    {
        update last_reset_date += 30
        store balance in log, month number reset
        reset user balance to 100
    }
}
end transaction

这里的想法是重置所有丢失的月份,即使这不是为一个特定用户运行超过一个月——因此循环。

关于php - php/mysql:30天间隔为预付费成员(member),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28531738/

10-11 05:52