实例 | PHP点击日历进行签到
最近在做这个日历签到的项目,在这里记录一下 使用的是calendar日历插件
不废话,直接提供源码 HTML页面
不废话,直接提供源码 HTML页面 PHP代码日历签到 "); return htmls.join(''); } };{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(""); htmls.push(""); htmls.push(""); var d, w; for (w = 1; w < 6; w++) { 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(""); 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(""); } htmls.push("" + (!isNaN(myMonth[w][d]) ? myMonth[w][d] : " ") + ""); } else { htmls.push("" + (!isNaN(myMonth[w][d]) ? myMonth[w][d] : " ") + ""); } } htmls.push("
//签到(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 本站文章如未注明出处均为原创,转载请注明出处,如有侵权请邮件联系站长。