簡體   English   中英

Php - Mysql。 讓玩家進入陣列並按時間排序

[英]Php - Mysql. Get players into an array and sort by time

我正在嘗試創建一個數組,然后從mysql_query中按時間對對象進行排序。

這是發生的事情:

  1. 當玩家完成轉彎時,我會更新數據庫。 我將數據庫變量“lastTurn”設置為當前時間。

      $nickname = $_POST['name']; $lastTurn = date(); $myTurn = NO; $query ... update query 
  2. 現在我需要找出下一位選手是誰,然后將轉牌發給他/她。

      $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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM