欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

分享一个会员签到

程序员文章站 2022-06-17 16:36:02
...
在项目中会员签到的模块必不可少的在,这里把自己整理过的一份代码个大家分享下。
先上效果图

分享一个会员签到

会员签到是必须做的,我个人对这个没啥好的头绪,这里参考的 素材火 的会员签到。

首先看下控制器的代码://会员签到
public function sign(){
$first = strtotime(date("Y-m-01 00:00:00"));
$first = date("w", $first);
$maxDay = date('t', strtotime("" . date("Y") . "-" . date("m") . ""));
for ($j = 0; $j $blankArr[] = $j;
}
for ($i = 0; $i $z = $first + $i;
$days[] = array("key" => $i, "key2" => $z % 7);
}
$this->assign("days", $days);
$this->assign("first", $first);
$this->assign("blankArr", $blankArr);
$total = $first + count($days);
for ($x = 0; $x $other[] = $x;
}
$this->assign("other", $other);
$this->display();
首先是获取这个月的第一天的时间戳,然后记录有这是周几,这个是$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;

然后是视图代码:

会员签到



























{$row['key']|getSign=###}






周日 周一 周二 周三 周四 周五 周六
-
-