2012-08-31 99 views
0

我使用UNITY創建遊戲它是PHP bla bla ... 我有一些小東西需要弄清楚排序行。 事情是 - 我需要對球員進行排序。 例如,如果播放器3個葉/離開遊戲,則玩家3有UID 2PHP mysql使用ORDER BY DESC排序行

那麼我們只有玩家1玩家2和玩家4他們0 1 3

player1 = 0 
player2 = 1 
player3 = 2 
player4 = 3 

所以我需要做的是那種說出來,所以如果player3 left uid 2 我需要做的排序 它會走這條路

player4 = 3 
player2 = 1 
player1 = 0 

我使用的sort($row = mysql_fetch_array($sql))但我只得到了錯誤 我還使用了sort($row['players']); $row['players']這是0 1 2 3 但它不是排序,我需要以及它的排序,但是,它的輸出是該

player1 = 3 
player2 = 1 
player4 = 0 

這是錯誤的不等於現在球員的事情,當前玩家

幫助我的傢伙什麼應該是正確的代碼

我希望大家明白我需要在這裏解決。

我也嘗試使用ORDER BY球員DESC但它不好。我知道有更多的指定順序。

我有一些更多的解釋,這是我需要解決的命令/排序。

GameID Turn 
3   2 
6   1 
7   2 
5   2 
8   0 
9   1 

return should be { for example GameID 6 is TURN for the Game or Left in the Game } 
GameID Turn 
6   1 
9   1 
8   0 
3   2 
5   2 
7   2 

another example { for example GameID 7 is TURN for the Game or Left in the Game } 
GameID Turn 
7   2 
3   2 
5   2 
8   0 
9   1 
6   1 

這裏是我的查詢

$email_val = [email protected]'; 

if($email_val != null){ 
    $sqlCheckError = mysql_query("SELECT * FROM game WHERE player1 = '".$email_val."' || player2 = '".$email_val."' || player3 = '".$email_val."' || player4 = '".$email_val."' ") or die (mysql_error()); 
    $gameCheck = mysql_fetch_array($sqlCheckError); 
    // CHECK FOR GAMEID ERROR 
    $gameIDCheck = $gameCheck['gameID']; 
    // EMAIL EQUAL TO THE CURRENTTURN WHERE ID 
    $sql = mysql_query("SELECT * FROM game WHERE player1 = '" . $email_val . "' || player2 = '".$email_val."' || player3 = '".$email_val."' || player4 = '".$email_val."' ") or die (mysql_error()); 
    // FIXED THE SORT OF 
    while ($row = mysql_fetch_array($sql)) {     
     $p1 = $row['player1']; 
     $p2 = $row['player2']; 
     $p3 = $row['player3']; 
     $p4 = $row['player4']; 

     if ($asterisk > 0) { 
      echo "*"; 
     } 
     echo $row['gameID'] . '|'; 
     echo $row['gameStatus'] . '|'; 

     echo $getNameLower->_NAME_LOWER_PLAYER_ONE_($p1); 
     echo $getNameLower->_NAME_LOWER_PLAYER_TWO_($p2); 

     if (!empty($p3)){ 
      echo $getNameLower->_NAME_LOWER_PLAYER_THR_($p3); 
     } else { 
      echo ''; 
     } 
     if (!empty($p4)){ 
      echo $getNameLower->_NAME_LOWER_PLAYER_FOU_($p4); 
     } else { 
      echo ''; 
     } 

     echo '|' . $row['start']; 
     echo '|' . $row['currentTurn']; 
     echo '|' . $row['lastWord']; 
     echo '|' . $row['lastPlayer']; 
     echo '|' . $row['lastPoints']; 

     $cur = $row['currentTurn']; 
     // CHECK THE CurrentTurn then PUT IT AS PICURL 
     if ($cur == '0') { echo $getPIC->purl_1($p1); } 
     elseif($cur == '1') { echo $getPIC->purl_2($p2); } 
     elseif($cur == '2') { echo $getPIC->purl_3($p3); } 
     elseif($cur == '3') { echo $getPIC->purl_4($p4); } 

     $asterisk++; 
    } 

    if($gameIDCheck == null){ 
     echo '0';   
    } 
} 
else{ 
    echo '0'; 
} 

是的,我已經認爲在第一位置也。 Order By對所有事物都很容易排序。但是,如果我們使用ORDER BY DESC 2 1 0和ASC 0 1 2,我不希望現在清除

+2

ORDER BY players DESC'有什麼問題?在數據庫中排序比在PHP中排序要好得多。 – Fluffeh

+0

可以請您發佈您的查詢嗎?這樣我可以看到它是否有錯誤=) – Mic1780

+0

我們不能使用ORDER BY我張貼另一個例子..如果我們這樣做,它將按照'2 1 0'順序排序,它不會排序像我們需要的'2 0 1'這樣的東西。 – Butternut

回答

0

是的。使用ORDER BY DESC執行查詢本身的排序..它使生活更容易..

+0

是的,我已經認爲這也是第一。 Order By對所有事物都很容易排序。但是,如果我們使用ORDER BY DESC'2 1 0'和ASC'0 1 2',我不希望它現在清楚,所以它不會排序像這樣的'2 0 1'和'1 2 0'。 – Butternut