-
白板的微信
不能换一种思路吗?
比如单独设计一个 XX签到表 字段:id-uid-time
用户签到动作时:
今天是否已签到过? Y -> false;
签到。(写入一条新数据到库中)
判断是否连续 X 天签到? Y -> 发放奖励。
至于如何判断连续 7 天签到,我这提供一个思路,仅供参考:判断用户签到表中最近 7 条数据是否均为 7 天内的数据。哈哈逃(其实是可行的)。
// 获取7天前的凌晨的时间戳
$seven_days_ago = strtotime('-7 days');
$seven_days_ago = mktime(0, 0, 0, date('m', $seven_days_ago), date('d', $seven_days_ago), date('Y', $seven_days_ago));
echo $seven_days_ago;
所以,重点还是思路。。。
-
扬帆大鱼
将相邻的日期换算成格林尼治毫秒数相减 如果等于86400000说明连着打卡了 大于说明中断
-
UYOU
签到的时候拿出上一次签到的日期
如果是昨天以前肯定断了如果是昨天,今天签到,那就接上了
另外数据表新增一个连续签到天数,只要没断,就在上次的基础上加1,断了就重新来
-
手掌心
只需把上次签到和本次签到的日期对比一下就可以了吧。
-
小怪兽爱吃肉
date_diff可以得出两个日期相距的天数,将之与大于某个日期的打卡次数比较,就知道这段日期内是否有打满卡
-
PIPIONE
在做签到累加的时候就做判断,当前签到的日期是不是最后签到日期+1,如果是那就做累加,不是就重置为0至于如何判断“当前签到的日期等于最后签到日期+1”,给你个示例代码:
$lastDateHistory = '2012-02-29'; // 假设这是从记录中取出的最后一次签到日期
$currentDate = '2012-03-01'; // 手动假写当前日期,实际应该等于 date('Y-m-d');
echo date('Y-m-d',strtotime("$currentDate -1 day")); // 返回值是当前日期的前一天