首先是获取这个月的第一天的时间戳,然后记录有这是周几,这个是$first的作用,比如这里是10月份,然后处理之后打印出来的$first得值就是4;
然后我们根据这个周几知道有几天的时间是空白的,上面记录的是4,所以前面有4的空白,周日、周一、周二、周三;
然后我们遍历这个月一共多少天,这里用到的 data("t",xx) 这个函数,他的作用是返回这个月的最大天数。28/29/30/31中的一个;
在循环的时候for是用0开始的,这里把原有得周的值加上然后模上7来取得周几的时间。
然后我们把数据分配到前端,这里需要考虑的是天数可能大于或者少于,那么我们这里就需要和开始一样补空了。ceil($maxDay/7)的值为5,所以这个月的星期为5周,然后*7之后为35,假设这个月是5周,那么最大是35天,和$total相减之后为0,则最后的空为0;
这里需要依赖的是两个文件,一个是CSS,一个是JQ。这里的话CSS我就不拿出来了,需要的可以去php代码注册然后另存为他的签到的CSS样式,JQ的是1.11.0.min.js,这个自行下载
其中的技巧就是满足7的时候才给这个用的比较经典,就我个人来说,我是写不出来,至少现在的能力是写不出来的。
还有数据库的代码:
CREATE TABLE IF NOT EXISTS `sign` ( `id` int(11) NOT NULL AUTO_INCREMENT, `uid` int(11) NOT NULL, `money` decimal(10,1) NOT NULL, `addtime` int(10) NOT NULL, `status` tinyint(1) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
需要注意的是用户登陆之后,我的是UID来识别的,所以在function的时候需要自行调整。