表 login_log
 
id      uid   time                 day  month  year     dateline          
2       5      1361269893    19   2          2013    2013-02-19 
2       6      1361269893    19   2          2013    2013-02-19 
2       6      1361269893    19   2          2013    2013-02-20 
2       6      1361269893    19   2          2013    2013-02-20 
2       7      1361269893    19   2          2013    2013-02-20 
2       6      1361269893    19   2          2013    2013-02-21如何判断用户连续登陆了几天。做用户奖励,比如连续一天送20积分。连续三天送100积分用。

解决方案 »

  1.   

    这个问题,你可以考虑更改数据设计结构:如增加:last(最后登录时间) ,consecutive(连续登录次数)等字段!每次登录成功时:读取用户资料,用现在时间和最后登录时间比较,如果24小时内consecutive +1,否则consecutive=1并且更新最后登录时间!虽然这样存在一定的数据冗余,但可以用空间换取时间,已加快程序的运行速度!
      

  2.   

    我觉得还是增加字段或者增加一个表算起来比较好,单纯用SQL计算比较繁琐。
      

  3.   

    建议做成异步模式,增加一张表A,A中至少有用户ID、上次登录时间、连续天数这三个个字段。假如今天用户登录,则判断“上次登录时间”是否是昨天,如果是昨天就更新“连续天数”,如果不是昨天,说明不连续,则连续天数重置为1。这样也可控制统一天内重复登录。大致思路是这样。
      

  4.   

    可以在数据库中添加两个字段,lastLoginTime,continueLoginCnt  用户每次登录成功你都去检查下lastLoginTime(即和当前时间对比)如果相隔大于等于一天将continueLoginCnt清零,其它情况将continueLoginCnt加一.
      

  5.   

    1、用户输入用户名和密码点击登入
    2、判断密码是否跟数据库里user表里的相同
    3、将这次登入的时间和用户名存入专门记录登入时间的表
    4、根据此次登入的时候,判断昨天是否登入过?前天是否登入过?
    5、送积分