2013-05-16 25 views
0

我有一個用於創建評分方法的公式。用戶輸入值「金」,「銀」和「銅」應該都是值得的。然後在數據庫中找到這些獎章,並且每個獎章的總數乘以用戶指定的數量。用戶也選擇「優先級值」來處理表中的單獨字段。PHP - 想要選擇特定的行數並從SQL中訂購它們

獎牌總值存儲在medaltotal變量中。優先級值除以該變量以給出總分數。

到目前爲止,所有這些都按預期工作。

我現在需要按照上述方法中的最高「分數」到最低「分數」的順序對錶格進行排序。一旦完成,它應該只回應前10個結果,以便根據得分給出「前10名」。

,我用迄今如下相對碼:

while ($row = $res->fetchRow()) { 
    $priorityvalue = ($row('gdp')/100000000); 
    $goldvalue = $row[strtolower('gold')] * $gold; 
    $silvervalue = $row[strtolower('silver')] * $silver; 
    $bronzevalue = $row[strtolower('bronze')] * $bronze; 
    $score = ($priorityvalue/$medaltotal); 
} 

我已經考慮與mysql_fetch_array修修補補,但不確定哪個方法最好的辦法是從這裏使用。有什麼建議?

+1

你能提供的樣本數據和預期的結果?舉個例子,我不明白你在做什麼。例如,用戶只有一行,那麼你在訂購什麼? –

回答

0

以下是操作方法。

  1. 讀取每行&賦予數組或對象的分數。
  2. 將其中的每一個添加到「結果列表」或數組中。
  3. 對得分列表中的結果列表進行排序。
  4. 打印第10

既然你從數據庫讀取順序並不要打印的順序,有必要將數據存儲在一個臨時數據結構&排序。

如上。

0

如果我理解正確的話,這個SQL返回你想要的結果:

select t.*, priority/medaltotal as score 
from table t 
order by score desc 
limit 10 
相關問題