[英]Php - Mysql. Get players into an array and sort by time
我正在嘗試創建一個數組,然后從mysql_query中按時間對對象進行排序。
這是發生的事情:
當玩家完成轉彎時,我會更新數據庫。 我將數據庫變量“lastTurn”設置為當前時間。
$nickname = $_POST['name']; $lastTurn = date(); $myTurn = NO; $query ... update query
現在我需要找出下一位選手是誰,然后將轉牌發給他/她。
$query = "SELECT * FROM active_users_table WHERE match_id='12345'
這給了我與當前游戲相關的所有玩家。
但現在我不知道如何繼續。 我想把所有的玩家都放到一個陣列中,然后在我猜測之后對它進行排序,看看下一個玩家是誰。 就像撲克游戲一樣。 我還需要檢查數據庫中的另一個變量“havePlayerLost”,看看他是否仍然在游戲中處於活動狀態。 如果他輸了,那么讓下一個活躍的玩家,並獲得最高的turnDate。
任何建議都非常感謝。
謝謝
我建議你讓MySQL / SQL做比你現在做的更多的工作。 用於更新播放器的SQL查詢還可以包含正確格式的當前日期/時間。
player_lastTurn = NOW()
在對數組進行排序時,我建議你讓MySQL處理這個:
ORDER BY player_lastTurn ASC
ASCending意味着它將為整個數據庫中的該單元名提供最早的DateTime。
當您使用這些查詢的結果並使用它構建數組時,您的數組將自動按正確順序排列。
這同樣適用於“丟失的玩家”,因此當您不加載它時,您自動不會將它們包含在數組中。
試試這個查詢
$query = "SELECT * FROM active_users_table WHERE match_id='12345'
and status !='havePlayerLost'
order by lastTurn Asc
要讓播放器排序,請嘗試更改添加'ORDER BY turnDate ASC'的查詢
$query = "SELECT * FROM active_users_table WHERE match_id='12345' ORDER BY turnDate ASC"
對於變量“havePlayerLost”,我認為您可以更改查詢,就像這樣添加'havePlayerLost = false'
$query = "SELECT * FROM active_users_table WHERE match_id='12345' AND havePlayerLost = false ORDER BY turnDate ASC"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.