鍍金池/ 問答/PHP/ PHP 連勝或連敗的的記錄怎么實(shí)現(xiàn)

PHP 連勝或連敗的的記錄怎么實(shí)現(xiàn)

應(yīng)用場情是這樣
需要記錄每天的連勝或連敗記錄。每當(dāng)勝或敗中斷需重新清零重新計算

用的是MYSQL但是不知道怎么設(shè)計表段了。求助一下

回答
編輯回答
懶豬

單獨(dú)建表最好,比如叫winscount, 字段:id, userid, wins, time
根據(jù)這局勝利與否,查找之前的winscount記錄, wins小于0是連敗,大于0連勝。
勝利后最新一條winscount記錄wins大于0就說明連勝,就wins+1,
失敗后最新一條winscount記錄wins大于0,則說明連勝中斷,就創(chuàng)建一條wins為-1的新紀(jì)錄。
失敗后如果最新一條winscount記錄wins小于0,就直接wins-1,如果大于0,說明連敗中斷,創(chuàng)建新winscount紀(jì)錄wins=1

wins你可以拆分為兩個字段都行,一個數(shù)字,一個表示勝敗。
這就是個思路,可以參考,細(xì)節(jié)可以優(yōu)化完善。這樣設(shè)計還有個好處是,可以追溯歷史記錄,比如年度最高連勝,季度最高連勝什么的...
題外話,連勝我覺得不應(yīng)該按天限制。

2017年4月14日 16:59
編輯回答
萌面人

可以用一個字段去記錄連勝場數(shù),一個字段去記錄勝利/失敗時間,然后程序首先判斷如果已過了一天,則連勝場數(shù)置為0,再判斷如果勝利則連勝場數(shù)+1,失敗則清0;再加一個表存勝利或者失敗記錄即可。

2018年8月24日 18:31
編輯回答
懷中人

嘗試下redis?
K(uid→標(biāo)識用戶)+V(bool→標(biāo)識勝負(fù))存儲記錄;
每次產(chǎn)生結(jié)果時除了更新mysql中的場次數(shù)據(jù),redis中的值喜加一,勝場時負(fù)歸零,負(fù)場反之;
然后每天結(jié)束的時候做數(shù)據(jù)持久化~

2017年9月13日 12:01
編輯回答
落殤

應(yīng)該有個用戶表 用戶挑戰(zhàn)(或比賽)事件記錄表 再是 記錄連勝的記錄表 具體字段自己思考

2017年7月7日 06:40
編輯回答
久礙你

這個和每天簽到是一個業(yè)務(wù)邏輯
1)一個用戶id
2)一個連勝或者連敗的次數(shù)
3)一個最新的狀態(tài)(勝或者?。?br>4)時間
問題解決

2018年2月16日 17:30