2012-03-13 46 views
1

我想創建一個數組,然後按照時間從mysql_query中對對象進行排序。Php - Mysql。讓玩家進入陣列並按時間排序

這是發生了什麼:

  1. 當玩家完成輪到他,我更新數據庫。我將數據庫變量「lastTurn」設置爲當前時間。

    $nickname = $_POST['name']; 
    $lastTurn = date(); 
    $myTurn = NO; 
    $query ... update query 
    
  2. 現在我需要找出下一個玩家是誰,並將轉身發給他/她。

    $query = "SELECT * FROM active_users_table WHERE match_id='12345' 
    

這給了我所有與當前遊戲相關的球員。

但現在我不知道該如何繼續。 我想把所有的玩家放到一個數組中,然後在turnDate後對它進行排序,看看下一個玩家是誰。像撲克遊戲一樣。我還需要檢查數據庫中的另一個變量「havePlayerLost」,以查看他是否仍然在遊戲中處於活動狀態。如果他輸了,那麼得到下一個活躍的球員,並且最高的turnDate。

任何意見是非常感激。

謝謝

回答

1

我建議你讓MySQL/SQL做比你現在做的更多的工作。您用來更新播放器的SQL查詢還可以以正確的格式包含當前的日期/時間。

player_lastTurn = NOW() 

當談到排序您的數組,我建議你讓MySQL的處理這一個藏漢:

ORDER BY player_lastTurn ASC 

上升意味着它會給你整個數據庫中爲單元名最古老的日期時間。

當您使用這些查詢的結果並使用它構建數組時,數組將自動按正確的順序排列。

這同樣適用於「丟失的玩家」,所以當你不加載它時,你自動不會將它們包含在數組中。

+0

很好。謝謝 – BlackMouse 2012-03-13 11:55:53

1

嘗試此查詢

$query = "SELECT * FROM active_users_table WHERE match_id='12345' 
      and status !='havePlayerLost' 
      order by lastTurn Asc 
+0

非常感謝你:) – BlackMouse 2012-03-13 11:56:05

1

爲了讓玩家排序嘗試更改查詢添加「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" 
+0

非常感謝你:) – BlackMouse 2012-03-13 11:56:12