本文主要介绍了php+mysql+jquery实现日历签到功能的过程与步骤,具有很好的参考价值

在网站开发过程中我们会经常用到签到功能来奖励用户积分,或者做一些其他活动。这次项目开发过程中做了日历签到,因为没有经验所有走了很多弯路,再次记录过程和步骤。

1.日历签到样式:

2.本次签到只记录本月签到数,想要查询可以写其他页面,查询所有签到记录。(功能有,非常麻烦,古没有做。)

3.前台代码

*{margin:0;padding:0;font:14px/1.8 "Helvetica Neue","microsoft yahei";}

签到记录

已签到

立即签到

已签到

$(document).ready(function(){

$(".ser_mbx").click(function(){

$.ajax({

url:"{:U('Index/Checkin')}",

type:'POST',

datatype:"json",

success:function(msg){

$(".already").show();

$(".ser_mbx").hide();

MonthSign();

}

});

});

});

$(document).ready(function(){

MonthSign();

});

function MonthSign(){

//ajax获取日历json数据

$.ajax({

url:"{:U('Index/MonthSign')}",

type:'POST',

datatype:"json",

success:function(msg){

//alert(msg);

/*var signList=[{"signDay":"10"},{"signDay":"11"},{"signDay":"12"},{"signDay":"13"}];

*/

calUtil.init(JSON.parse(msg));

}

});

}

var calUtil = {

//当前日历显示的年份

showYear:2015,

//当前日历显示的月份

showMonth:1,

//当前日历显示的天数

showDays:1,

eventName:"load",

//初始化日历

init:function(signList){

calUtil.setMonthAndDay();

calUtil.draw(signList);

calUtil.bindEnvent();

},

draw:function(signList){

//绑定日历

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(){

//绑定上个月事件

$(".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);*/

});

},

//获取当前选择的年月

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("

" + 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 < 7; w++) {

htmls.push("

");

for (d = 0; d < 7; d++) {

var ifHasSigned = calUtil.ifHasSigned(signList,myMonth[w][d]);

console.log(ifHasSigned);

if(ifHasSigned){

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('');

}

};

4.后台代码:查询今天是否签到:

$points = M('points_log');

$userid=session('user.id');

$begintime=date("Y-m-d H:i:s",mktime(0,0,0,date('m'),date('d'),date('Y')));

$endtime=date("Y-m-d H:i:s",mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1);

$where=array(

'points'=>'5',

'user_id'=>$userid,

'createtime' => array(array('gt',$begintime),array('lt',$endtime)),

);

$res=$points->where($where)->order("createtime desc")->select();

//var_dump($res['0']['points']);

$this->assign('res',$res);

5.查询积分:

/*查询积分*/

$jfen=M(cuser);

$list=$jfen->where(array('id'=>$userid))->field('points')->find();

$preg = '/[0]*/';

$poin = preg_replace($preg, '', $list, 1);

$this->assign('poin',$poin);

6.签到写入数据库:

/*签到*/

if(IS_AJAX){

$userid=session('user.id');

$type='签到';

$typename='checkin';

$id_status='up';

$date=Date('Y-m-d H:i:s');

$dataList=array(

'user_id'=>$userid,

'type'=>$type,

'typename'=>$typename,

'id_status'=>$id_status,

'points'=>'5',

'createtime'=>$date,

'remark'=>'奖励5积分'

);

$points = M('points_log');

if($points->add($dataList)){

$log=session('user.id');

$user=M('cuser');

$user->where(array('id'=>$log))->setInc('points',5);

}

$this->ajaxReturn($status);

}

7. /*查询本月签到天数,并以json格式返回*/

public function MonthSign(){

$userid=session('user.id');

$points = M('points_log');

$res=$points->where(array('user_id'=>$userid))->select();

$sign='[';

foreach($res as $key=>$value){

$first=explode(' ', $value['createtime']);

$second=explode('-', $first['0'])['2'];

if($key==0){

$sign .= '{"signDay":"'.$second.'"}';

}else{

$sign .= ',{"signDay":"'.$second.'"}';

}

}

$sign .=']';

$this->ajaxReturn($sign,'json');

}

以上就是本文的全部内容,希望对大家的学习有所帮助。

相关推荐:

php+mysql+jquery实现日历签到

基于jquery实现日历签到功能_jquery

javascript - PHP+JS的日历签到怎么实现

日历签到 mysql_php+mysql+jquery实现日历签到功能的方法相关推荐

  1. js php 实现日历签到_php+mysql+jquery实现日历签到功能

    在网站开发过程中我们会经常用到签到功能来奖励用户积分,或者做一些其他活动.这次项目开发过程中做了日历签到,因为没有经验所有走了很多弯路,再次记录过程和步骤. 1.日历签到样式: 2.本次签到只记录本月 ...

  2. js php 实现日历签到_php+mysql+jquery实现日历签到功能的过程与步骤

    在网站开发过程中我们会经常用到签到功能来奖励用户积分,或者做一些其他活动.这次项目开发过程中做了日历签到,因为没有经验所有走了很多弯路,再次记录过程和步骤.日历签到样式: 本次签到只记录本月签到数,想 ...

  3. php mysql ajax日历记事本_php+mysql+jquery日历签到

    在网站开发过程中我们会经常用到签到功能来奖励用户积分,或者做一些其他活动.这次项目开发过程中做了日历签到,因为没有经验所有走了很多弯路,再次记录过程和步骤.1.日历签到样式:2.本次签到只记录本月签到 ...

  4. js php 实现日历签到_基于jquery实现日历签到功能_jquery

    在一些任务游戏.贴吧管理中都会有一个签到功能,帮助大家记录登录天数,积累等级经验,这个日历签到功能是如何实现的,本文为大家进行演. 本文实例讲述了基于jquery实现日历签到功能.分享给大家供大家参考 ...

  5. 每日签到html特效,jQuery实现日历每日签到网页特效

    本文主要和大家分享jQuery实现日历每日签到网页特效,主要以代码的形式和大家分享,希望能帮助到大家. index.html 代码: jQuery简洁的日历签到插件 $(function(){ //a ...

  6. html 轮播怎么用jq设置,jQuery轮播图功能实现方法

    本文实例为大家分享了jQuery轮播图功能的实现代码,供大家参考,具体内容如下 jQuery轮播(无animation) html布局 5 1 2 3 4 5 1 < > CSS /* 轮 ...

  7. php mysql实现每日签到积分_php+mysql+jquery实现日历签到功能

    在网站开发过程中我们会经常用到签到功能来奖励用户积分,或者做一些其他活动.这次项目开发过程中做了日历签到,因为没有经验所有走了很多弯路,再次记录过程和步骤. 1.日历签到样式: 2.本次签到只记录本月 ...

  8. 日历mysql签到源码_php+mysql+jquery实现日历签到功能

    在网站开发过程中我们会经常用到签到功能来奖励用户积分,或者做一些其他活动.这次项目开发过程中做了日历签到,因为没有经验所有走了很多弯路,再次记录过程和步骤. 1.日历签到样式: 2.本次签到只记录本月 ...

  9. mysql怎么做每天签到_PHP+MYSQL+AJAX实现每日签到功能

    sign.php文件 if ($_GET['do']=='getDay'){ $db=new mysqli('localhost','root','123456','sign'); $uid=2; $ ...

最新文章

  1. 网络丢包问题排查总结
  2. 德信创业系2014版
  3. linux path在哪个文件夹,linux PATH环境变量全解析
  4. Go 函数特性和网络爬虫示例
  5. 七、华为鸿蒙HarmonyOS应用开发之Java UI框架、常用Text组件和Button组件使用
  6. oracle 10g express linux,在Ubuntu下安装Oracle Database 10g Express Edition
  7. es6 循环加载ES6模块
  8. iOS活动倒计时的两种实现方式
  9. dp------最长公共子序列问题
  10. mysql创建表shop_ShopXO商城-支付方式 - 数据库设计 - 数据库表结构 - 果创云
  11. 2016012013 王雪 散列函数的应用及其安全性
  12. 20145321 实验三实验报告
  13. window xp系统安装php环境_在Windows XP下安装Apache+MySQL+PHP环境
  14. Spring事务和事务传播机制
  15. 8queen(稍后补)
  16. 0基础运营小白如何写出10W+,六招搞定!
  17. 最新CTR预测服务的GPU优化实践
  18. Hilt Test 短篇:插入辅助测试,插这插那,操家伙,看飞刀。——对面那位接着:memory 做的 *……()……*
  19. PyQt:桌面程序设计的饕餮盛宴
  20. 【马红“名师+”】:【名师引路】聆听薛法根《语文学习任务设计》讲座学习活动(一)

热门文章

  1. WiderPerson行人检测数据集
  2. STM32 keil5 报错:flash download failed-cortex M3解决方法
  3. iPerf 3.13 的交叉编译,移植,使用
  4. 牛客 郊区春游 状压+最短路
  5. 转Ruby on Rails的核心特性是什么
  6. 运满满服务器繁忙显示500,运满满上线两年多 听听货车司机怎么说
  7. jQuery学习小征途
  8. 对驱动器盘符和卷名的认识
  9. 无需修改代码,用 fcapp.run 运行你的 REST 应用
  10. 用C语言实现汉诺塔的移动过程并且统计移动的次数