小程序制做签到javascript
签到制做 天天分为 已签到未签到
两种状态 把全部的天数存入一个数组中php
首先须要知道本月有多少天? 如 :2月有 28天 3月有31天 每个月的天数都不一样 当润年的时候天数也会不一样html
根据PHP函数date("t"); 能够得到有多少天 把天数存入data变量中在前台页面wxml用if判断java
<view class='qp p5' wx:if="{{monthday==31}}"> <view> <image src='/img/{{day[28].imgs}}'></image> 29日 </view> <view> <image src='/img/{{day[29].imgs}}'></image> 30日 </view> <view> <image src='/img/{{day[30].imgs}}'></image> 31日 </view> </view> <view class='qp p5' wx:if="{{monthday==30}}"> <view> <image src='/img/{{day[28].imgs}}'></image> 29日 </view> <view> <image src='/img/{{day[29].imgs}}'></image> 30日 </view> </view> <view class='qp p5' wx:if="{{monthday==29}}"> <view> <image src='/img/{{day[28].imgs}}'></image> 29日 </view> </view> <view class='qp p5' wx:if="{{monthday==28}}"> </view>
看一下表结构thinkphp
表结构很是简单 uid 字段 日期字段json
把userid 发送到后台根据userid 查询签到表 查到本月签到了 那些天小程序
我用的thinkphp5框架数组
$userid=$_GET["userid"]; //查询本人这个月 有那些天签到了 $a=date("Y-m");//获取本月份 $b=strtotime("+1 months");//获取下一个月份 $b=date("Y-m",$b);//用来查询 本月的全部天数 大于本月 小于下一个月 $data=db("qiandao")->where("uid",$userid)->where("riqi",">=",$a)->where("riqi","<=",$b)->select(); $arr=[]; foreach ($data as $key => $value) { $arr[]=substr($value["riqi"], 8,2); } return json_encode($arr);
返回的数据格式 已签到的天数 29号 1号 7号 24号 16号框架
全部的天数存在一个数组 中全部天数的数据格式 每一天数都有一个imgs图片路径 经过更改这个路径来切换 已签/未签状态函数
根据拿到的天数 修改对应数组的imgs的图片路径
that=this; wx.request({ url: server+'wechar/qiandao/qiandaosel', data:{userid:userid},//发送userid 根据userid肯定用户 success:function(res){ var arr=res.data; for(var i=0;i<arr.length;i++){ //经过修改对应的下标imgs路径实现 //由于数组的下标从0开始因此要-1 that.data.day[arr[i]-1].imgs="qian_n.png"; } //把修改完的数据放入data里 that.setData({ day:that.data.day, }); } })
点击签到事件
$data["uid"]=$_GET["userid"]; $data["riqi"]=date("Y-m-d"); $nowtime=date("Y-m-d"); //判断用户今天是否已经签到过了 if(db("qiandao")->where("uid",$data["uid"])->where('riqi',$nowtime)->find()){ }else{ db("qiandao")->insert($data); } //返回今天签到的日期 return date("d");