2015-04-19 133 views
1

這是關於mysql_num_rows命令的問題。基本上我想問的是,如果有可能將結果彙總起來並按降序排列。mysql_num_rows結果順序

$fetchrank = mysql_query("SELECT * FROM leden WHERE level = 6 OR level = 106"); 
while ($getrank = mysql_fetch_array($fetchrank, MYSQL_ASSOC)) { 

    $getranked = mysql_query("SELECT nieuws_id FROM nieuws_berichten WHERE member_id='".$getrank['member_id']."'"); 
    $critical = mysql_num_rows($getranked); 
    $posts = $critical; 

    echo"".stripslashes(substr($getrank['gebruikersnaam'],0,25))." has ".$posts." posts!"; 
} 

echo"</div>"; 

}

這實際上表明它我想要什麼,但我想它現在訂購NUM_ROWS結果,從最高到最低。這是可能通過一個數組?所以我可以使用PHP命令或者有其他方法嗎?

我知道mysql_num_rows已經過時了,但是現在我將使用這個舊的框架,也許在不久的將來我們將會改變到另一個。

+0

mysql_num_rows返回一個數字。 「order mysq_num_rows」是什麼意思? –

+0

上一個查詢選擇一定數量的用戶,每個用戶都有自己的帖子數量,這就是mysql_num_rows進入計算帖子的位置。但是,我想將帖子從最高到最低排序。這有可能嗎? –

+0

正如我之前告訴過你的,當你使用排序功能時可以用PHP來完成,或者當你在查詢中添加order_by時,你可以在MYSQL中完成。我不知道你的表結構是什麼,所以我想你可以添加ORDER_BY member_id來獲得結果。 –

回答

0

如果我知道你想真正做對了什麼,你可以這樣做:

$fetchrank = mysql_query("SELECT * FROM leden WHERE level = 6 OR level = 106"); 

$totalposts = 0; 
$getranks = mysql_fetch_array($fetchrank, MYSQL_ASSOC); 
$getranks = rsort($getranks); 
foreach ($getranks as $getrank) { 

$getranked = mysql_query("SELECT nieuws_id FROM nieuws_berichten WHERE member_id='".$getrank['member_id']."'"); 
$critical = mysql_num_rows($getranked); 
$posts = $critical; 
$totalpostst = += $posts; 
echo"".stripslashes(substr($getrank['gebruikersnaam'],0,25))." has ".$posts." posts!"; 
} 
echo $totalposts; 
echo"</div>"; 

得到檢索到的帖子的總量。要對它們進行排序,您必須使用asort或rsort對數組進行排序(取決於方向)。請參閱man page。排序將應用於陣列上。所以我相應地更改了代碼。 Adapt

$getranks = rstort($getranks); 

根據您的需要根據手冊。您可以看到使用陣列內容

echo'<pre>'; 
print_r($getranks); 
echo '</pre>'; 

查看數組內部發生了什麼變化。

+0

我是否需要對變量$ totalposts進行排序,然後才能通過rsort命令將其打印出來?或者你可以舉個例子嗎? –