mysql 一周簽到表 mysql簽到表怎麼設計找

2021-10-17 13:11:29 字數 1922 閱讀 4110

匿名使用者

1級2017-04-12 回答

具體的簽到規則是

管理員在後台配置,每次連續簽到的天數 然後贈送積分或者其他一些優惠,還要設定每人是否領取一次。

主表是簽到基本設定

規則是副表

然後使用者簽到是一張表。現在糾結在如何去判斷使用者是否領取過。

是否還要新增一張表?

簽到表create table `signin` (

`id` integer unsigned not null auto_increment,# id

`cid` integer unsigned not null ,# 角色id

`signstatus` smallint(1) not null default 0, # 當天是否簽到 0-未簽到 1-普通玩家已簽到 2-vip玩家已簽到

`signdatetime` datetime default '2012-01-01 12:12:12',# 簽到時間

`signtimes` smallint not null default 0,# 當月簽到天數

primary key (`id`),

foreign key (cid) references characters(cid) on delete cascade on update cascade

) engine=innodb default charset=utf8; – kolnick 2015-11-25

1個答案 票 數

yunzl

0 票yunzl6

如果你非要省張表

那就添一列儲存數字的

然後我們來玩玩2進製

給你一串二進位制,你怎麼算成十進位制?

1000 == 2^3 =8

0100 == 2^2 =4

0010 == 2^1 =2

0001 == 2^0 =1

(任何非0的0次冥為1)

也就是說 1111 = 2^3 + 2^2 + 2^1 + 2^0 = 15

可能你會說臥槽這跟我的要求有什麼關係

你不覺得 未領取or已領取很貼二進位制麼。。。

0為未領取 1為已領取

好我們繼續

假設我們有4個領取活動

第乙個 新人領取活動

第二個 100天簽到領取活動

第三個 200天簽到領取活動

第四個 300天簽到領取活動

新人註冊了個號,點開了領取頁

伺服器在簽到表裡取出了我讓你新增的那列

是0**機械的處理了起來

首先轉成2進製,還是0

""切割每個字元得到陣列a

比如我們想知道這個新人的 第乙個 任務有沒有領取

那就判斷

$a[count($a)-1]是否空字元,空字元就等於沒領取(php取陣列數量應該是count吧)

不是空字元再判斷是不是0,是0就等於沒領取

是1就是領取過了

同理$a[$a.length-2]就是第二個任務,$a[$a.length-3]就是第三個任務

那麼如何寫回去呢

新人看那個新人任務沒領取過,於是點了一下

伺服器同樣取出這個數字,轉2進製,切割,判斷$a[count($a)-1]是不是沒領取,

既然沒領取那咱麼就發獎勵吧

執行完髮獎勵的程式後,開始寫入領取資訊

$a[count($a)-1]=1;//嗯,1就是領取過了,然後

$i=count($a);

$num=0;//算總數的變數

while(i){//i為真則迴圈,0不算,所以到i=0就不會執行了

i--;//現在$a[i]==$a[count($a)-1]了

if($a[i]){//必須為真才能執行,而空白和0都不為真,所以建議0為未領取

$num+=pow(2,i);//php的算次冥應該是這個吧

echo $num;//存上,打完收工

一周又是一周

三年又三年,之後又三年,這就九年了,老大!無間道的話還迴盪在耳邊,而我入職以來,這就已經是第四周了。時間飛逝歲月如梭,一天一天的日子,感覺起來也挺快的。除了第一周剛上任的時候,感覺時間慢慢流,現在進入工作狀態以後,時間還是一閃而過的。白天的時間最是難熬,特別是下午的時候。工作時間久,而下午的時候也是...

MySQL一周學習總結之DDL語言

ddl語言即資料定義語言,是建立資料庫 表等的語言。1 建立資料庫 語法 create database 資料庫名 2 檢視mysql下所有的資料庫名 語法 show databases 3 刪除資料庫 語法 drop database 資料庫名 4 使用指定的資料庫 語法 use 資料庫名 1 表...

mysql備份指令碼例子 一周輪動

bin sh d backup mkdir backup chmod 777 r backup group concat函式用於將多個字串連線成乙個字串,在拼接成字串時就會存在拼接長度的問題,mysql 預設的拼接最大長度為1024 個位元組,由於1024個位元組會出現不夠用的情況,所以有時需要去根...