2013-03-30 77 views
0

我有一個由用戶組成的mysql數據庫。在那個數據庫中,有一個「分數」列。我想爲用戶製作個人資料,但會顯示他們的排名。我不想做這個服務器端,所以我試圖從配置文件頁面本身。這是我當前的代碼:PHP:「排名」系統

$sql3 = mysql_query("SELECT * FROM members ORDER BY score DESC") or die("Could not allocate information!"); 
$rank = 0; 
while(mysql_fetch_assoc($sql3)){ 
    $rank++; 
} 
echo "<b>Rank: </b>#$rank<br/>"; 

香港專業教育學院也嘗試:

$sql3 = mysql_query("SELECT * FROM members ORDER BY score DESC") or die("Could not allocate information!"); 
$rank = 0; 
while(mysql_fetch_assoc($sql3)){ 
    $rank++; 
    echo "<b>Rank: </b>#$rank<br/>"; 
} 

無論哪種方式進行,每個用戶都有相同的等級,#2。有什麼辦法可以做到這一點?如果你需要更多的信息,請只評論,不要下載我。謝謝。

+0

設置'$ rank'後,試着'while'循環內的'echo'。在第二次嘗試中,您使用'$ num'而不是'$ rank'。 – Aiias

+2

歡迎來到Stack Overflow! [請不要在新代碼中使用'mysql_ *'函數](http://stackoverflow.com/q/12859942/1190388)。他們不再被維護,並[正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到紅色框?改爲了解準備好的語句,然後使用[tag:PDO]或[tag:MySQLi]。 – hjpotter92

+0

對不起,我修復了我的代碼。它用於num,但現在是rank。無論哪種方式,它仍然將每個人都顯示爲等級2,如果我在這個時候添加回顯,他們會得到1-2等級(我有2個用戶)。 –

回答

0

你試過:

$sql3 = mysql_query("SELECT * FROM members ORDER BY score DESC") or die("Could not allocate information!"); 
$rank = 0; 
while(mysql_fetch_assoc($sql3)){ 
    $rank++; 
    echo "<b>Rank: </b>#$rank<br/>"; 
} 
+0

是的。這給了我: 「排名:#1 排名:#2」 –

0

只需使用<ol> [有序列表]標籤:

<ol> 
<?php while($user = mysql_fetch_assoc($sql3)): ?> 

    <li><?php echo $user['name']; ?></li> 

<?php endwhile; ?> 
</ol> 

猜測你想要顯示用戶的[例如某些屬性name或您在表格中稱之爲],否則顯示數字列表並不合理。

無論如何mysql_*功能已棄用,請移至PDOmysqli

+0

即時通訊要做的是找到用戶站在網站上的所有其他人,然後顯示他們的「排名」。 –

+0

這是代碼的作用[根據你原來的MySQL查詢]。 – moonwave99

0

嘗試是這樣的:

$sql3 = mysql_query("SELECT * FROM members ORDER BY score DESC") or die("Could not allocate information!"); 
$rank = 0; 
while($row = mysql_fetch_assoc($sql3)) { 
    $rank++; 
    if ($row['user_id'] == $current_pages_user_id){ 
      echo "<b>Rank: </b>#$rank<br/>"; 
    } 
} 
+0

我不想顯示用戶評分。我想利用自己的分數,找出其中的玩家表示在所有其他用戶 –

+0

的@RobertDoe見編輯 –

+0

但我希望任何人看到的人居......不只是業主的個人資料 –

0

嘗試

while($user = mysql_fetch_assoc($sql3)) {  
    $rank++;  
    echo "<b>#$rank. $user['name'] Score: </b> $user['score']<br />";  
} 

但作爲hjpotter92指出,考慮使用庫MySQLi或PDO。

+0

產生的號碼,這顯示等級1-2(我有2個用戶)。我只想顯示1個用戶的排名,他們會得到多少分數 –

+0

這就是我要找的。現在我希望它只顯示特定用戶名的信息。 –

+0

Aha,添加到您的SQL查詢:WHERE userId = X或類似。像: 'SELECT * FROM成員其中userid = 5 ORDER BY成績DESC' 但你可以跳過循環,而是做: '$ SQL =請求mysql_query(「SELECT * FROM成員其中userid = 5 ORDER BY成績DESC LIMIT 1 「); $ user = mysql_fetch_assoc($ sql); 回聲 「#$ $級用戶[ '名']得分: $用戶[ '分數']
。」' – user1823799

0

我覺得你真的想要做的是這樣的。

$result = mysql_query("SELECT member_name, score, 
     (SELECT COUNT(*) 
     FROM members ORDER BY score DESC) AS rank 
FROM members 
WHERE member_id = 5 
LIMIT 1") or die("Could not allocate information!"); 

$member = mysql_fetch_assoc($result); 

echo "<b>#$member['rank']. $member['name']</b> Score: $member['score']<br />"; 

正如其他人之前提到的,請查看mysqli和pdo。