2012-08-31 63 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