PHP求连续签到天数

PHP求连续签到天数,第1张

设计表结构时 多加一个字段 来存放连续签到天数, 每次 签到时更新这个字段   要简单的多

否则你需要 每个人 都循环判断前一天是否签到的方法来解决

参考代码

1  --循环法

declare @day int  = 1, --

 2 @userId int =1,  --用户id

 3 @count int = 0 ,  --连续签到多少天

 4 @isSinginToday int  --今天是否签到

 5 

 6 while  exists ( select * from  #SignInLog  

 7     where UserId  = @UserId and DATEDIFF(day ,createtime  ,getdate() ) = @day    )

 8 begin

 9     set @count = @count + 1      -- 【循环方法】

10     set @day = @day + 1  --        

11 end

12 

13 select @isSinginToday =COUNT(*)  from  #SignInLog    where UserId  = @UserId  and DATEDIFF(day ,createtime ,getdate() ) = 0  --今天是否登录

14     

15     

16 select  @isSinginToday , --当天是否签到

17 @count + @isSinginToday  -- 连续签到n天

如果数据库支持 row_number(), mysql  不支持此函数... 

可以用

declare @now datetime  = getdate() ,    

@count int ,

@userid int = 1 ,

@isSinginToday int 

select @count  = count(*) from (

    select  datediff( day  , CreateTime  , @now )         aa ,  --签到时间对比今天的差值

        row_number() over (order by createtime  desc )    bb    --排序字段 

    from  #SignInLog

    where UserId  = @userId   and  datediff( day , CreateTime , @now )  > 0  --条件排除今天的签到记录 

) T where aa = bb  

select @isSinginToday =COUNT(*)  from  #SignInLog    where UserId  = @UserId  and DATEDIFF(day ,createtime ,getdate() ) = 0  --今天是否登录

    

select  @isSinginToday , --当天是否签到

@count + @isSinginToday  -- 连续签到n天

1、首先,在后台数据库中建立一个表,用来存储签到打卡的位置信息,表中包括签到者的ID、签到时间、签到地点等字段。

2、在签到时,让签到者使用手机定位获取自己的位置信息,将获取的位置信息(经纬度)发送到后台服务器。

3、后台服务器接收到签到者的位置信息后,将其转换为具体的地址,并将签到者的ID、签到时间、签到地点等信息写入到后台数据库中。

4、最后,将签到信息返回给签到者,以确认签到成功。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9906498.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-03
下一篇2023-05-03

发表评论

登录后才能评论

评论列表(0条)

    保存