如圖所示:
實現上圖功能,建立兩張表:簽到獎品表、簽到記錄表(這個表可以再拆分出乙個表)
2*功能:計算兩個時間戳之間相差的日時分秒
3*$begin_time 開始時間戳
4*$end_time 結束時間戳5*/
6public
function timediff($begin_time,$end_time
)else
1415
//計算天數
16$timediff = $endtime-$starttime;17
$days = intval($timediff/86400);
18//
計算小時數
19$remain = $timediff%86400;
20$hours = intval($remain/3600);
21//
計算分鐘數
22$remain = $remain%3600;
23$mins = intval($remain/60);
24//
計算秒數
25$secs = $remain%60;
26$res = array("day" => $days,"hour" => $hours,"min" => $mins,"sec" => $secs
);27
return
$res;28
}2930//
黃梅--簽到列表 20171206 by csj
31public
function
signlist()
38$list = d('loginrewards')->field('id,day,reward,icon,type,name,des')->select();
39$isok = d('sign')->where("user_id=")->order('id desc')->find();
4041
$last_time = strtotime($isok['s_time']);//
最後一次簽到時間
4243
$t = time
();44
//$start = mktime(0,0,0,date("m",$t),date("d",$t),date("y",$t));
45$end = mktime(23,59,59,date("m",$t),date("d",$t),date("y",$t));//
當天時間的最後1刻 (注意)
4647
$current_day = $end;//
當天時間的最後1刻
4849
$timeis = $this->timediff($last_time,$current_day);//
時間差50
51if (!empty($isok
)) else
60 }elseelse
68 }elseif ($timeis['day']==0)
7172 }elseelseif($value['day']<=$isok['s_number'])else
82 }elseif ($timeis['day']==0) else89}
90}91$list[$key]['is_sign'] = $is_sign;92
}93}94 }elseelse
101}
102}
103$re['data'] = $list
;104
$re['message'] = '請求成功';
105 gresult::getinstance()->echookandresult($re
);106 }
view code
參考:
php實現簽到功能
首先我在資料庫裡建了兩張表,乙個是使用者的積分表,乙個是簽到狀態表,分來用來記錄使用者的積分數和先到狀態 在使用者簽到狀態表中我們有乙個字段,last sign time,即上一次簽到時間,每次可以簽到的時候把這個時間與當前時間進行比較 如果相差為0天,則說明今天已簽到 這個簽到是24小時內只能簽到...
PHP實現簽到功能
php實現簽到功能 1 表設計 1 主表 create table sign id int 11 not null auto increment comment 主鍵自增 uid varchar 50 not null default 0 comment 使用者id 唯一 username varc...
PHP實現簽到功能
1 表設計 1 主表 create table sign id int 11 not null auto increment comment 主鍵自增 uid varchar 50 not null default 0 comment 使用者id 唯一 sign count int 11 not n...