A. php中怎樣防止每次重復簽到。一天有三個時間段可簽到,7點到9、13點到15、18點到19。每個時間段只可簽一次
簽到時查詢最後一次記錄,比較時間,如果在相應時段已簽到就不能再簽了
B. php如何統計用戶連續簽到多少次
查詢表時加個日期變數欄位,然後倒序過慮計算簽到天數
如MYSQL:
selectcount(*)連繼簽到天數from(
selecta.簽到日期,(@i:=DATE_ADD(@i,INTERVAL-1day))todayfrom簽到表ainnerjoin
(select@i:=max(簽到日期)from簽到表where簽到日期=curdate()or簽到日期=DATE_ADD(curdate(),INTERVAL-1day))b
orderbya.簽到時間desc
)cwheretoday=簽到日期
C. 怎麼用php來獲取時間 周次 節次來做簽到功能
簽到功能主要是需要獲取上次簽到時間,然後進行比對,如果比較之後在零點之後,且大於24小時,就認為連續簽到失敗。
關鍵點:每次需要記錄簽到時間,這樣以後無論是根據記錄,還是相應演算法都可以統計相關的簽到記錄。
簽到功能核心就是時間的比較,只要比對好時間,然後封裝簽到方法,就可以輕松記錄簽到情況。
D. php 簽到時間判斷,該怎麼寫出源代碼,比如現在簽到了,過了晚上24點就可以再簽到一次
首先對需求分析一下:
根據當前時間判斷,是否可以簽到。(對吧?)
所以你需要有一個變數用來儲存他上一次簽到的時間,具體到某一天。在簽到的時候取這個欄位然後判斷就行了。
應該要用到的是strtotime() 和date() 這兩個函數。
(有點晚了提供下思路睡了,樓主可以根據具體的資料庫結構適當修改)
E. php 想做個簽到,但是怎麼判斷連續3天 連續7天 連續30天簽到過啊。。思路是有 但是MYSQL那邊的語句。
數據表裡存儲兩個欄位,一個int存時間戳,一個int存簽到計數。每次簽到發生時,php頁面做判斷,計算本次簽到時間戳與系統記錄的最後一次簽到時間戳之差,超過3600*24,則將計數修改為零,否則+1。
sql語句就不寫了吧,就一個update的事情。。。
F. PHP 如何判斷用戶當天已經簽到了
你好,你可以設置一個欄位讓他記錄先到的狀態,然後根據狀態去判斷是否先到。
G. php 像淘寶領取淘金幣一樣的簽到系統 怎麼寫
這個比較簡單,思路是這樣的:
在用戶表裡添加一個連續登錄的欄位,如果每天連續登錄自增1,如果超過24小時的話就直接歸0.
再增加一個最後登錄的時間,格式是時間戳的。
首先判斷最後登錄的時間和現在的時間的時間差值是多少,函數如下:
<?php
function checkTime() {
if (time() - 最後登錄時間 > 24*60*60 ) { // 判斷時間是否大於24小時
// 讓欄位歸0
}
}
?>
這個樣子就可以了。
至於加分就簡單了。
如果欄位值為:
1就加5,
2就加8,
3就加11,
4就加15,
5就加19,
6就加24,
大於7就加29
H. PHP求連續簽到天數
設計表結構時多加一個欄位來存放連續簽到天數,每次簽到時更新這個欄位要簡單的多
否則你需要 每個人 都循環判斷前一天是否簽到的方法來解決
參考代碼
1--循環法
declare@dayint=1,--
2@userIdint=1,--用戶id
3@countint=0,--連續簽到多少天
4@isSinginTodayint--今天是否簽到
5
6whileexists(select*from#SignInLog
7whereUserId=@UserIdandDATEDIFF(day,createtime,getdate())=@day)
8begin
9set@count=@count+1--【循環方法】
10set@day=@day+1--
11end
12
13select@isSinginToday=COUNT(*)from#SignInLogwhereUserId=@UserIdandDATEDIFF(day,createtime,getdate())=0--今天是否登錄
14
15
16select@isSinginToday,--當天是否簽到
17@count+@isSinginToday--連續簽到n天
如果資料庫支持row_number(), mysql 不支持此函數...
可以用
declare@nowdatetime=getdate(),
@countint,
@useridint=1,
@isSinginTodayint
select@count=count(*)from(
selectdatediff(day,CreateTime,@now)aa,--簽到時間對比今天的差值
row_number()over(orderbycreatetimedesc)bb--排序欄位
from#SignInLog
whereUserId=@userIdanddatediff(day,CreateTime,@now)>0--條件排除今天的簽到記錄
)Twhereaa=bbselect@isSinginToday=COUNT(*)from#SignInLogwhereUserId=@UserIdandDATEDIFF(day,createtime,getdate())=0--今天是否登錄
select@isSinginToday,--當天是否簽到
@count+@isSinginToday--連續簽到n天
I. 請問下那個PHP每日簽到時怎麼實現的!
給你個思路吧,資料庫設置一個欄位為最後登錄時間,判斷時間是否為前一天,如果是就要求簽到。 再設置個簽到欄位,判斷當前是否簽到,以防登錄了沒簽到卻不要求簽到了。
J. PHP論壇每日簽到拜託了各位 謝謝
檢查一下你的調用是否無誤