PHP+MYSQL+AJAX实现每日签到功能

一、web前端及ajax部分

文件index.html
<html> <head> <meta http-equiv=Content-Type content="text/html;charset=utf-8"> 

<title>PHP+AJAX+MYSQL实现每日签到</title> 

<script type="text/javascript" src="js/jquery.min.js"></script>

 <script type="text/javascript">

   //page load get num 

   $(window).ready(function(){
     doGetDays();
   }); 

//get sign days 

 function doGetDays(){
   $.get("/sign.php?do=getDay",{},function(data){
     $("#days").html(data);
   });
 } 

//do sign 

 function doSign(){
   $.get("/sign.php?do=sign",{},function(data){     if(data==1){
       alert("sign success!");
       window.location.href=‘/‘;
     }else if(data==2){
       alert("already sign today! next tomorrow!");
     }
 });
 }

</script>

</head> <body>

 <a style="cursor:pointer;" onclick="doSign();">签到<span>连续签到<span id="days"></span>天</span></a>

 </body> </html>
 
二、PHP后端处理部分 
sign.php文件

<?php 

if ($_GET[‘do‘]==‘getDay‘){ 

  $db=new mysqli(‘localhost‘,‘root‘,‘123456‘,‘sign‘); 

  $uid=2; $getDay="SELECT `signdays` FROM `user` WHERE `id`= {$uid}"; $day=$db -> query($getDay); $days =$day -> fetch_array(MYSQLI_ASSOC); echo $days[‘signdays‘];
 } 

if ($_GET[‘do‘]==‘sign‘){

   $db=new mysqli(‘localhost‘,‘root‘,‘123456‘,‘sign‘);

   $uid=2; 

  $time=time(); 

  //check sign today 

  $todayBegin=strtotime(date(‘Y-m-d‘)." 00:00:00"); 

  $todayEnd= strtotime(date(‘Y-m-d‘)." 23:59:59"); 

  $checkSignSql="SELECT * FROM `sign` WHERE `uid` = {$uid} AND `dateline` < {$todayEnd} AND `dateline` > {$todayBegin} "; 

  $checkSignToday= $db -> query($checkSignSql); 

  $checkSign = $checkSignToday -> fetch_array(MYSQLI_ASSOC);

   if (empty($checkSign)){ 

    $sql="SELECT * FROM `sign` WHERE `uid` = {$uid} "; 

    $return = $db -> query($sql) -> fetch_array(MYSQL_ASSOC);

    //check sign table exist uid record 

    if (empty($return)){//no

       $insertSql="INSERT INTO `sign` (`uid`,`dateline`) VALUES (‘{$uid}‘,‘{$time}‘) "; 

       $insert = $db -> query($insertSql); 

       $updateSignSql="UPDATE `user` SET `signdays` =1 WHERE `id` = {$uid} ";

       $db -> query($updateSignSql); echo 1;
     }else{       // check is continuous ? reset with login set signdays as 0 !!!!!  

      $yesterdayBegin= strtotime(date("Y-m-d",strtotime("-1 day"))." 00:00:00"); 

      $yesterdayEnd= strtotime(date("Y-m-d",strtotime("-1 day"))." 23:59:59"); 

      $checkContinuSql="SELECT * FROM `sign` WHERE `uid` = {$uid} AND `dateline` < {$yesterdayEnd} AND `dateline` > {$yesterdayBegin}"; $checkContinuYesterday = $db ->query($checkContinuSql) -> fetch_array(MYSQL_ASSOC);          

      if (!empty($checkContinuYesterday)){            

        $replaceSql="REPLACE INTO `sign` (`uid`,`dateline`) VALUES (‘{$uid}‘,‘{$time}‘) ";            

        $replace=$db -> query($replaceSql); 

        $updateSignSql="UPDATE `user` SET `signdays` = `signdays` + 1 WHERE `id` = {$uid} ";
        $db -> query($updateSignSql); echo 1; 

      }else{
          
    }
  }
}else{       

  echo 2;// allready sign.     

} 

?>

三、Mysql数据库部分
CREATE TABLE IF NOT EXISTS `sign` (
 `uid` int(11) NOT NULL,
 `dateline` varchar(10) COLLATE utf8_bin NOT NULL, PRIMARY KEY (`uid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

INSERT INTO `sign` (`uid`, `dateline`) VALUES (1, ‘1389072071‘), (2, ‘1389072735‘); 

CREATE TABLE IF NOT EXISTS `user` (
 `id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘USERID‘,
 `username` varchar(35) COLLATE utf8_bin NOT NULL COMMENT ‘username‘,
 `signdays` int(11) NOT NULL COMMENT ‘签到天数‘, PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=3 ;

INSERT INTO `user` (`id`, `username`, `signdays`) VALUES (1, ‘ggbound‘, 4), (2, ‘other‘, 1);  
时间: 2024-11-08 21:22:18

PHP+MYSQL+AJAX实现每日签到功能的相关文章

NopCommerce 4.2 之微信小程序 - 每日签到功能

/// <summary> /// 调用接口自动签到,并返回签到结果 /// </summary> /// <returns></returns> [Route("index")] [APIFilter(true, true)] public APIResult<object> index() { //设置为驼峰命名(即将实体全部首字母小写处理) var serializerSettings = new JsonSeriali

使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能

使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能 要求:写一个省市区(或者年月日)的三级联动,实现地区或时间的下拉选择. 实现技术:php ajax 实现:省级下拉变化时市下拉区下拉跟着变化,市级下拉变化时区下拉跟着变化. 使用chinastates表查询 Ajax加载数据 1.这是chinastates表 2.做一个简单php:Ajax_eg.php <!DOCTYPE html><html>    <head>        <meta c

利用PHP+MySql+Ajax操作实现年月日联动功能

PHP+MySql+Ajax实现年月日的三级联动 <!DOCTYPE html><html>    <head>        <meta charset="UTF-8">        <title></title>        <script src="bootstrap/js/jquery-1.11.2.min.js"></script>        <s

基于Servlet+JDBC+Bootstrap+MySQL+AJAX权限管理系统项目实战教程

项目简介 权限系统一直以来是我们应用系统不可缺少的一个部分,若每个应用系统都重新对系统的权限进行设计,以满足不同系统用户的需求,将会浪费我们不少宝贵时间,所以花时间来设计一个相对通用的权限系统是很有意义的.     本系统的设计目标是对应用系统的所有资源进行权限控制,比如应用系统的功能菜单.各个界面等进行权限的操控.技术介绍 · Servlet3.0 Servlet 3.0 作为JavaEE6 规范体系中一员,随着JavaEE6规范一起发布.该版本在前一版本(Servlet2.5)的基础上提供了

ajax的上拉功能

<div class="footReturn"> <!-- <a id="showcard" onClick="showcard()" class="submit" href="javascript:void(0)">保 存</a> --> <div class="window" id="windowcenter"

服务器租用之谈谈mysql怎么开启远程登录功能

服务器租用之谈谈mysql怎么开启远程登录功能 做网站,要经常更新数据库,接触的数据库肯定都是mysql.有时候建站的时候因为数据库和网站放在不同的IP,这个时候就需要用程序进行mysql的远程连接,而mysql因为安全的因素,默认的时候用户设置的是不能远程连接,只能本地连接,这个时候就需要自己去修改其中的设置.下面小编就介绍一下操作方法. 进入cmd命令模式.mysql -h localhost-u mysql -pEnter password: ****** 连接数据库.mysql> use

java签到功能

原文:java签到功能 源代码下载地址:http://www.zuidaima.com/share/1550463784176640.htm spring+springMVC+hibernate框架 简单的登陆验证 签到的主要处理在于签到历史的显示 测试账号test 密码test 插件路径在readme里 截图:    

dotConnect for MySQL控件下载及功能介绍

dotConnect for MySQL完全基于ADO.NET方法,因此您完全可以采用标准ADO.NET数据提供的方法来使用它.是一款为Microsoft .NET Framework提供直接MySQL数据库连接的数据发生器控件. 数据发生器,dotConnect for MySQL为Microsoft .NET Framework和.NET 组件Framework提供了直接MySQL数据库连接.它为NET Framework (ADO.NET)方法提供了完全的基于ActiveX的数据对象.AD

欧美斯项目签到功能,实时获取当前所在位置的经纬度

由于欧美斯项目需要签到功能,因此需要给后台传一个当前位置的经纬度,以下是获取经纬度的方法 1>导入CoreLocation.frameWork 2>引入头文件,并遵循协议 #import <CoreLocation/CoreLocation.h> <CLLocationManagerDelegate> 3>代码 @interface YYAboutUsViewController ()<UIWebViewDelegate,CLLocationManagerD