2013-10-24 51 views
2

我目前正在建立一個網站,人們可以訪問並輸入他們跑步,游泳,徒步或滑雪的距離。這是我的第一個網站,2-3個月前我對編碼一無所知,所以記住這一點。排行榜與獨特的名字

我已經創建了一個存儲這個表的表,並且還有一個leaderboard.php將數據提取到排行榜。

這是它的外觀現在:

插入到表:

if (!mysqli_query($con,"INSERT INTO total(username, type, distance) VALUES ('$username', '$type', '$distance')")) 

並獲取數據到排行榜:

$result = mysqli_query($con, "SELECT username, distance FROM total ORDER BY distance DESC"); 
     $rank= 1; 


if (mysqli_num_rows($result)) { 
      while ($row = mysqli_fetch_assoc($result)) { 
       echo "<tr><td>{$rank}</td> 
         <td>{$row['username']}</td> 
         <td>{$row['distance']}</td></tr>"; 

      $rank++; 
     } 
     } 
    ?> 

這樣做的問題是,當有人輸入他們的用戶名/類型/距離它會創建新的行。所以一個人可以有不同的等級。我希望排行榜總結每個用戶不同類型活動的所有距離。

什麼是適當的編碼?如果可能的話,我只想修改leaderboard.php而不是表格,因爲我也使用這些數據用於網站的其他部分。

回答

1

嘗試此相反的

SELECT username, distance FROM total ORDER BY distance DESC; 

SELECT username, sum(distance) as total_distance FROM total group by username ORDER BY total_distance desc; 

,讓我知道,如果它的工作與否。

+1

感謝您迴應!它現在顯示用戶名分組,並按正確的順序,但距離不顯示 – Arborelius

+0

我增加了距離「選擇用戶名,距離,總和(距離)作爲total_distance從總組按用戶名ORDER BY total_distance desc;」現在它可以工作。謝謝您的幫助! – Arborelius

+0

@Arborelius歡迎。如果它有幫助,你可以進行投票並選擇這個答案。 –

0

要澄清是否有其他人有類似的問題,或對此感興趣....我不得不改變一些距離的總和顯示,它是按總和排序,而不僅僅是最大的個人距離。

$result = mysqli_query($con, "SELECT username, sum(distance), distance as total_distance FROM total group by username ORDER BY sum(distance) desc;"); 
    $rank= 1; 

    if (mysqli_num_rows($result)) { 
     while ($row = mysqli_fetch_assoc($result)) { 
      echo "<tr><td>{$rank}</td> 
        <td>{$row['username']}</td> 
        <td>{$row['sum(distance)']}</td></tr>"; 

     $rank++; 

     } 
    } 
?> 

那是我完成的代碼^