javascript - 签到与连续签到
PHP中文网
PHP中文网 2017-04-11 10:34:57
0
6
1140

没有做过连续签到
求一个签到与连续签到的 逻辑

PHP中文网
PHP中文网

认证高级PHP讲师

모든 응답(6)
巴扎黑

如果每次签到都存一条记录,那么这张表一定非常巨大。

看看现在各方推出的签到和连续签到功能,基本上都是以月为单位,也有部分是在活动周期为单位,这样有一个好处——只需要用一个字段保存整月的签到情况就好,不需要拆成30条记录——因为不需要按签到的日期去查有哪些人,所以不需要精确记录每一天的签到用于查询。因为只需要在打开这个人的页面的时候显示他哪些天签到了,从一个字段里一次性读出来所有签到数据,前端显示即可。

为了便于查询签到天数和连续签到天数,可以分别用一个字段来保存。签到的时候直接根据当前签到记录很容易算出来这两个数据。有了这两个数据字段,要查询符合条件的用户也就是一个SQL的事情。

道理差不多就是这些了,自己想想试试吧。

洪涛

刚好整理了一份签到数据统计的项目SQL语句。

比如:
1.统计每天的每小时用户签到情况?
2.统计每天的用户签到数据和每天的增量数据?
3.统计签到天数相同的用户数量?
4.统计每个用户的连续签到时间?
5.数据表如何设计?

文章地址:Mysql 常用SQL语句集锦

在文章的后半部分!

洪涛

如果只是连续签到的话可以考虑建一张表记录

 连续签到天数 上次签到时间 

每次签到时根据上次签到时间判断是否连续,也可以加月份的判断

Ty80

首先从设计数据库开始,
签到表应该有用户id,签到类型,签到积分,连续签到数,签到时间等字段。给签到时间字段加索引。
用户点击签到后,你可以从数据库中按照时间降序,获取该用户最新的一条签到数据,首先这一条数据判断当天他是否已经签过到了,如果判断他当天已经签到了,那么不允许他再次签到,如果没有签过到,那么在判断是否是昨天的签到数据,如果是昨天的签到数据的话,我在插入新的数据时,连续签到数字段的值为昨天连续签到数+1,否则连续签到数为1插入到数据库中。

对于显示连续签到数的时候呢,我们同样获取用户的最新一天签到记录,如果这天数据不是今天或者昨天的签到数据的话,我们现实连续签到0天,如果是今天或则昨天的签到数据的话就显示连续签到数字段的值。

最后我没有做过签到功能,这些都是我自己的想法。如果有误还望大神们指点指点我,本菜鸟一名。大神求带。哈哈哈

洪涛

主要看你项目对签到和连续签到的要求
针对这个签到和连续签到的问题,我觉得从两个方面去处理
1、把每日签到,记录到数据库,考虑到量大的问题,可以分表兼容,因为这个都是简单的业务逻辑,不会链表操作,根据uid来分表就可以,这个可以实现签到和连续签到的查询
2、使用redis计数实现连续签到;当用户签到的时间和当月天数时间一致的话,就是连续签到。在每个月1好,就可以重置数据

巴扎黑

redis 的bitmap 参考一下

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿