限时免费试用:欢迎注册 api.bigmodel.org ,快速体验大模型 API 接入服务。
当前位置:首页 >开发者 >PHP笔记 >PHP高级

实例 | PHP点击日历进行签到

分类:PHP高级时间:2018-12-15浏览:4922
最近在做这个日历签到的项目,在这里记录一下 使用的是calendar日历插件 不废话,直接提供源码 HTML页面




日历签到












  • 本月签到
  • 签到累计
  • 累计积分
  • 全部积分
{include file="footer"}
calendar.js
var calUtil = {
  //当前日历显示的年份
  showYear:2015,
  //当前日历显示的月份
  showMonth:1,
  //当前日历显示的天数
  showDays:1,
  eventName:"load",
  //初始化日历
  init:function(signList,s=''){
    calUtil.setMonthAndDay();
    if (typeof(s) == 'undefined'){
    }else{
      signList.splice('','',s);
    }
    calUtil.draw(signList);
    calUtil.bindEnvent(signList);
  },
  draw:function(signList){
    //绑定日历
    //alert(signList.length);
    // console.log(signList);
    if(signList.length > 21){
      //alert(21);
      $("#sign_note").empty();
      $("#sign_note").html('');
    }
    var str = calUtil.drawCal(calUtil.showYear,calUtil.showMonth,signList);
    $("#calendar").html(str);
    //绑定日历表头
    var calendarName=calUtil.showYear+"/"+calUtil.showMonth+"";
    $(".calendar_month_span").html(calendarName);  
  },
  //绑定事件
  bindEnvent:function(signList){
    // //绑定上个月事件
    // $(".calendar_month_prev").click(function(){
    //   //ajax获取日历json数据
    //   //var signList=[{"signDay":"10"},{"signDay":"11"},{"signDay":"12"},{"signDay":"13"}];
    //   calUtil.eventName="prev";
    //   calUtil.init(signList);
    // });
    // //绑定下个月事件
    // $(".calendar_month_next").click(function(){
    //   //ajax获取日历json数据
    //   //var signList=[{"signDay":"10"},{"signDay":"11"},{"signDay":"12"},{"signDay":"13"}];
    //   calUtil.eventName="next";
    //   calUtil.init(signList);
    // });
    
    $(".calendar_record").click(function(){
      //ajax获取日历json数据
      // console(typeof(signList)+"yxy");
    	//var signList=[{"signDay":"10"},{"signDay":"11"},{"signDay":"12"},{"signDay":"13"}];
    	//var tmp = {"signDay":$(this).html()};
      //if (typeof(signList) == 'undefined'){
        //不做处理
      //}else{
      //  signList.splice('','',tmp);
      //  console.log(signList);
      //  calUtil.init(signList);
     // }
     //alert($(this).html());
    var tmp = {"signDay":$(this).html()};
    console.log(tmp.signDay)

    // if(tmp.signDay==11){
      //执行签到
      $.ajax({
          type:'POST',
          url:"checksign.html", 
          data:{day:tmp.signDay},
          dataType:'json',
          success:function(res){
              // if(res.result==1){
                // calUtil.init(signList,tmp);
              // }else{
                  alert(res.msg);
                  location.reload(true);
              // }
   
          }
      })

    // }else{
    //   alert("请签到当天日期")
    // }
    });
  },
  //获取当前选择的年月
  setMonthAndDay:function(){
    switch(calUtil.eventName)
    {
      case "load":
        var current = new Date();
        calUtil.showYear=current.getFullYear();
        calUtil.showMonth=current.getMonth() + 1;
        break;
      case "prev":
        var nowMonth=$(".calendar_month_span").html().split("年")[1].split("月")[0];
        calUtil.showMonth=parseInt(nowMonth)-1;
        if(calUtil.showMonth==0)
        {
            calUtil.showMonth=12;
            calUtil.showYear-=1;
        }
        break;
      case "next":
        var nowMonth=$(".calendar_month_span").html().split("年")[1].split("月")[0];
        calUtil.showMonth=parseInt(nowMonth)+1;
        if(calUtil.showMonth==13)
        {
            calUtil.showMonth=1;
            calUtil.showYear+=1;
        }
        break;
    }
  },
  getDaysInmonth : function(iMonth, iYear){
   var dPrevDate = new Date(iYear, iMonth, 0);
   return dPrevDate.getDate();
  },
  bulidCal : function(iYear, iMonth) {
   var aMonth = new Array();
   aMonth[0] = new Array(7);
   aMonth[1] = new Array(7);
   aMonth[2] = new Array(7);
   aMonth[3] = new Array(7);
   aMonth[4] = new Array(7);
   aMonth[5] = new Array(7);
   aMonth[6] = new Array(7);
   var dCalDate = new Date(iYear, iMonth - 1, 1);
   var iDayOfFirst = dCalDate.getDay();
   var iDaysInMonth = calUtil.getDaysInmonth(iMonth, iYear);
   var iVarDate = 1;
   var d, w;
   aMonth[0][0] = "日";
   aMonth[0][1] = "一";
   aMonth[0][2] = "二";
   aMonth[0][3] = "三";
   aMonth[0][4] = "四";
   aMonth[0][5] = "五";
   aMonth[0][6] = "六";
   for (d = iDayOfFirst; d < 7; d++) {
    aMonth[1][d] = iVarDate;
    iVarDate++;
   }
   for (w = 2; w < 7; w++) {
    for (d = 0; d < 7; d++) {
     if (iVarDate <= iDaysInMonth) {
      aMonth[w][d] = iVarDate;
      iVarDate++;
     }
    }
   }
   return aMonth;
  },
  ifHasSigned : function(signList,day){
   var signed = false;
   $.each(signList,function(index,item){
    if(item.signDay == day) {
     signed = true;
     return false;
    }
   });
   return signed ;
  },
  drawCal : function(iYear, iMonth ,signList) {
   var myMonth = calUtil.bulidCal(iYear, iMonth);
   var htmls = new Array();
   htmls.push("
"); htmls.push("
"); //htmls.push("
下月
"); //htmls.push("
上月
"); htmls.push("
"); htmls.push("
"); htmls.push("
"); htmls.push("
"); htmls.push("
" + myMonth[0][0] + "
"); htmls.push("
" + myMonth[0][1] + "
"); htmls.push("
" + myMonth[0][2] + "
"); htmls.push("
" + myMonth[0][3] + "
"); htmls.push("
" + myMonth[0][4] + "
"); htmls.push("
" + myMonth[0][5] + "
"); htmls.push("
" + myMonth[0][6] + "
"); htmls.push("
"); var d, w; for (w = 1; w < 6; w++) { htmls.push("
"); for (d = 0; d < 7; d++) { var ifHasSigned = calUtil.ifHasSigned(signList,myMonth[w][d]); console.log("001:"+ifHasSigned); if(ifHasSigned && typeof(myMonth[w][d]) != 'undefined'){ htmls.push("
" + (!isNaN(myMonth[w][d]) ? myMonth[w][d] : " ") + "
"); } else { htmls.push("
" + (!isNaN(myMonth[w][d]) ? myMonth[w][d] : " ") + "
"); } } htmls.push("
"); } htmls.push("
"); htmls.push("
"); htmls.push("
"); return htmls.join(''); } }; PHP代码
//签到(status=1)
public function sign(){
    //当月累计签到
    $sign = $this->model->table('praise')->where('uid='.$_SESSION['user']['uid'].' and time>'.strtotime(date("Y-m-01",time())))->select();
    if($sign){
        foreach($sign as $k=>$v){
            $sign[$k]['day']=date('d',$v['time']);
        }
    }
    //所有签到
    $allsign = $this->model->table('praise')->where('uid='.$_SESSION['user']['uid'].' and status=1')->select();
    $this->assign('allsign', $allsign);
    $this->assign('sign', $sign);
    $this->assign('user', $_SESSION['user']);
    $this->display('member_sign');
}   
//点击签到 
public function checksign(){
    if($_POST['day']){
        $day=intval($_POST['day']);
    }else{
        $day=date("d",time());
    }
    if($day!=date("d",time())){
        $data['msg']="请在当前日期点击签到";
        echo json_encode($data);
        return;
    }
    $condition2  = 'uid='.$_SESSION['user']['uid'];
    $condition2 .= " AND DATE_FORMAT(FROM_UNIXTIME(time),'%Y-%m-%d') = '".date("Y-m-d",time())."'";
    $sign = $this->model->table('praise')->where($condition2)->find();
    //判断是否已经签到
    if (empty($sign)) {
        //新增积分
        $this->model->table('member')->data('integral=integral+'.$this->config['site_praise'].',allintegral=allintegral+'.$this->config['site_praise'])->where('uid='.$_SESSION['user']['uid'])->update();//增加积分
        $arr['subject']="签到赠送积分";
        $arr['uid'] = $_SESSION['user']['uid'];
        $arr['integral'] = $this->config['site_praise'];
        $arr['time']=time();
        $this->model->table('member_integral')->data($arr)->insert();
        
        $updateuser = $this->model->table('member')->where('uid='.$_SESSION['user']['uid'])->find();//购物后更新session积分
        $_SESSION['user']['integral'] = $updateuser['integral'];
        $_SESSION['user']['allintegral'] = $updateuser['allintegral'];
        
        
        $data['uid'] = $_SESSION['user']['uid'];
        //$data['pid'] = $item;
        $data['status'] = 1;
        $data['time'] = time();
        $this->model->table('praise')->data($data)->insert();
        //$this->model->table('post')->data("digg=digg+1")->where('id='.$id)->update();
        //$this->model->table('member_comment')->data("praise=praise+1")->where('id='.$item)->update();
        $this->jssuccess('签到成功!');
    } else {
        $this->jserror('已经签过到了。');
    }
}


//判断是否已经签到
function is_sign_now(){
    $condition2  = 'uid='.$_SESSION['user']['uid'];
    $condition2 .= " AND DATE_FORMAT(FROM_UNIXTIME(time),'%Y-%m-%d') = '".date("Y-m-d",time())."'";
    $sign = module('common')->model->table('praise')->where($condition2)->find();
    //判断是否已经签到
    if (empty($sign)) {
        return true;
    }else{
        return false;
    }
}
相关数据表的结构 pre_praise id uid pid time sort status pre_member_integral id uid subject integral status type time
本站文章如未注明出处均为原创,转载请注明出处,如有侵权请邮件联系站长。
0/500
Share your thoughts respectfully.