php mysql连续签到跨月_PHP连续签到功能实现方法详解

本文实例讲述了PHP连续签到功能实现方法。分享给大家供大家参考,具体如下:

require "./global.php";

$act = isset($_GET['act']) ? $_GET['act'] : "error";

// d($act);

switch($act){

case "qiandao":

$uid = intval($_POST['uid']);

$res = $db -> get('qian_dao','*',array('uid'=>$uid));

// last_query();

$time = time();

//判断今天是否签到

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

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

$isexit = $db -> get('qian_dao','id',array('AND'=>array('uid'=>$uid,'qian_dao_time[>=]'=>$todayBegin,'qian_dao_time[<=]'=>$todayEnd)));

// last_query();

if($isexit){

// echo "今天已签到!";

Log::writeLog(print_r(array('state'=>'stop','msg'=>'今天已签到!'),true));

echo json_encode(array('state'=>'stop','msg'=>'今天已签到!'));

exit;

}

if($res){

//存在签到

if((time() - $res['qian_dao_time'] > 24*60*60)){ // 判断时间是否大于24小时

// 让字段归0

$addInfo = $db -> update('qian_dao',array('qian_dao_num'=>1,'qian_dao_time'=>$time),array('uid'=>$uid));

}else{

// 更新签到的天数

$addInfo = $db -> update('qian_dao',array('qian_dao_num[+]'=>1,'qian_dao_time'=>$time),array('uid'=>$uid));

}

}else{

// echo '您还没有签到过';

//没有签到过

$db -> insert('qian_dao',array('uid'=>$uid,'qian_dao_num'=>1,'qian_dao_time'=>$time));

// echo $db ->last_query();

}

// 插入签到记录

$db -> insert('sign',array(

'uid'=>$uid,

'dateline'=>$time,

));

// 获取连续签到的天数

$info = $db -> get('qian_dao','qian_dao_num',array('uid'=>$uid));

echo json_encode(array('state'=>'success','msg'=>"您是第".$info."天签到"));

break;

default :

echo json_encode(array("ret"=>0,"msg"=>"操作不存在!"));

break;

}

sql:

CREATE TABLE IF NOT EXISTS `qian_dao` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`uid` int(1) NOT NULL COMMENT '用户id',

`qian_dao_num` int(11) NOT NULL COMMENT '签到次数',

`qian_dao_time` int(11) NOT NULL COMMENT '签到时间',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `sign` (

`uid` int(11) NOT NULL,

`dateline` varchar(10) COLLATE utf8_bin NOT NULL,

KEY `uid` (`uid`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

html:

include './global.php';

$uid = 1;

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

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

$isexit = $db -> get('qian_dao','id',array('AND'=>array('uid'=>$uid,'qian_dao_time[>=]'=>$todayBegin,'qian_dao_time[<=]'=>$todayEnd)));

$flag = '';

if($isexit){

$flag = 'current';

}

?>

jquery制作每天或每日打卡签到特效

*{margin:0;padding:0;list-style-type:none;}

a,img{border:0;text-decoration:none;}

/*今日签到*/

.singer{border:1px solid #DCDBDB;padding:10px;height:45px;line-height:45px;width:290px;margin:20px auto;}

.ul{border:1px solid #DCDBDB;padding:0 10px 10px 10px;;width:290px;margin:20px auto;}

.li{border:1px solid #DCDBDB;padding-left:10px;height:25px;line-height:25px;width:280px;margin:10px 0 0 0;}

.singer_l_cont, .singer_r_img{float:left;}

.singer_l_cont{width:145px;background:url(images/sing_per.gif) no-repeat left 12px;text-indent:23px;font-size:12px;}

.singer_r_img{display:block;width:114px;height:52px;background:url(images/sing_week.gif) right 2px no-repeat;vertical-align:middle;float:right;*margin-bottom:-10px;}

.singer_r_img:hover{background-position:right -53px;text-decoration:none;}

.singer_r_img span{margin-left:14px;font-size:16px;font-family:'Hiragino Sans GB','Microsoft YaHei',sans-serif !important;font-weight:700;color:#165379;}

.singer_r_img.current{background:url(images/sing_sing.gif) no-repeat 0 2px;}

每天签到赢取PK币

/*签到模块日期捕捉:*/

function week(){

var objDate= new Date();

var week = objDate.getDay();

switch(week)

{

case 0:

week="周日";

break;

case 1:

week="周一";

break;

case 2:

week="周二";

break;

case 3:

week="周三";

break;

case 4:

week="周四";

break;

case 5:

week="周五";

break;

case 6:

week="周六";

break;

}

$("#sing_for_number").html( week );

}

$(document).ready(function(){

week();

var cache=new Array(); // 缓存变量,当数据被访问过之后放置在缓存中,加快访问速度

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

// 如果缓存中存在数据,那么直接从缓存中读取;如果不存在数据,那么就从数据库中读取,并把数据存入缓存

if (typeof(cache['stop'])=='undefined') {

$.ajax({

url:"action.php?act=qiandao",

type:"post",

dataType:'json',

data:{

uid:1,

},

async:false,

success:function(data){

// alert(data.msg);

switch(data.state){

case 'success':

alert(data.msg);

break

case 'stop':

cache['stop'] = data.msg;

alert(data.msg);

break;

}

$(".singer_r_img").addClass("current");

}

})

}else{

alert(cache['stop'])

}

})

})

// 获取签到记录

$sign = $db -> select('sign','*',array('uid'=>$uid,'ORDER'=>'dateline DESC'));

?>

if(empty($sign)){

?>

暂无签到信息

}else{

foreach($sign as $k=>$v){

?>

<?php echo ($k + 1);?> <?php echo date('Y-m-d H:i:s',$v['dateline']);?>

}

}

?>

希望本文所述对大家PHP程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现数据库关联运算的简便方法是使用Java的JDBC技术以及SQL语句中的“数据库名.表名”语法,可以在SQL语句中直接指定不同数据库中的表进行关联查询和运算。 具体实现步骤如下: 1. 在Java程序中通过JDBC连接到不同的数据库。 2. 编写SQL语句,使用“数据库名.表名”语法指定不同数据库中的表进行关联查询和运算。 3. 执行SQL语句,获取查询结果。 下面是一个简单的示例代码: ```java import java.sql.*; public class CrossDatabaseQuery { public static void main(String[] args) { Connection conn1 = null; Connection conn2 = null; try { // 连接到MySQL数据库 String url1 = "jdbc:mysql://localhost:3306/mysql_db"; String user1 = "root"; String password1 = "root"; conn1 = DriverManager.getConnection(url1, user1, password1); // 连接到Oracle数据库 String url2 = "jdbc:oracle:thin:@localhost:1521:oracle_db"; String user2 = "system"; String password2 = "oracle"; conn2 = DriverManager.getConnection(url2, user2, password2); // 执行SQL语句 String sql = "SELECT t1.id, t2.name FROM mysql_db.table1 t1 JOIN oracle_db.table2 t2 ON t1.id = t2.id"; Statement stmt = conn1.createStatement(); ResultSet rs = stmt.executeQuery(sql); // 处理查询结果 while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); System.out.println("id: " + id + ", name: " + name); } // 关闭连接和资源 rs.close(); stmt.close(); conn1.close(); conn2.close(); } catch (SQLException e) { e.printStackTrace(); } } } ``` 以上示例代码中,在SQL语句中使用了“mysql_db.table1”和“oracle_db.table2”语法,指定了不同数据库中的表进行关联查询。在执行SQL语句之前,需要通过JDBC连接到不同的数据库。最后处理查询结果并关闭连接和资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值