正文
php签到数据表设计 php签到数据表设计方案
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
用thinkphp 制作一个像百度知道的签到功能怎么弄啊。要求:点击签到。显示签到成功,经验加10
什么是thinkphp啊php签到数据表设计?
要是php代码的话
就假设建个数据库php签到数据表设计,主键是用户名,一项是经验值,一项是时间
点击签到,用get传给一个php页面一个值,php获取之后,用select where 查找到cookie中的用户名,找到对应的经验值,先获取一次付给变量,再加上10用update语句更改数据库内容,并更改时间为最新次签到时间
然后再看显示签到那页,可以先用个php查找对应cookie的时间项 ,并与当前时间对比(这个看php签到数据表设计你咋设置了,是按24点过了就能在签到还是过了24小时在下一次签到),显示签到或已签到(已签到不赋予功能)
基本思路就这样了,但不是最优化,比如那个显示签到已签到,还要遍历一次数据库,如果数据库数据量很大,遍历很浪费时间,也可以放到另一个php里去实现查询是否可签
希望能有帮助
PHP求连续签到天数
设计表结构时 多加一个字段 来存放连续签到天数, 每次 签到时更新这个字段 要简单的多
否则你需要 每个人 都循环判断前一天是否签到的方法来解决
参考代码
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天
php mysql 日历式签到 怎么做
给你个思路,代码实现并不难。首先在你的用户表中插入一个字段,用来保存签到的时间戳,用户点击签到时,先从数据库中取这个时间戳,与今天0点的时间戳进行比较,如果比今天0点的时间戳小,就说明今天没有签到,那么更新这个字段为现在的时间戳。如果比今天0点的时间戳大,就说明今天已经签到过了,不做更改。
你可能会用到:
mktime 函数,这个函数是构筑时间戳的,它的参数可以从右向左依次省略。省略的参数将会默认为本地时间。如:mktime(0,0,0) 这样就取到了今天0点的时间戳。
time 函数,取当前时间的时间戳,这个函数没有任何参数。
php签到数据表设计的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于php签到数据表设计方案、php签到数据表设计的信息别忘了在本站进行查找喔。