Я создаю таблицы лидеров, которые будут отображать следующее: Rank, Username, Score
В настоящее время у меня есть таблица, на которой будут отображаться Имя пользователя и Оценка из данных в таблице mysql, мне просто интересно, как я буду показывать показ ранга для каждого пользователя, номер 1 – это пользователь с наивысшим результатом, а затем спускается.
Благодаря!
Я рекомендую читать PHP / MySQL .
Заголовок HTML: откройте таблицу, создайте заголовки
<table> <tr> <td>Rank</td> <td>User</td> <td>Score</td> </tr>
PHP: динамически создавать строки для каждого пользователя
<?php $result = mysql_query("SELECT user, score FROM leaderboard ORDER BY score DESC"); $rank = 1; if (mysql_num_rows($result)) { while ($row = mysql_fetch_assoc($result)) { echo "<td>{$rank}</td> <td>{$row['user']}</td> <td>{$row['score']}</td>"; $rank++; } } ?>
Нижний колонтитул HTML: необходимо закрыть таблицу
</table>
Вы можете все это сделать в SQL:
SET @row = 0; SELECT @row := @row + 1 AS rank userName, score FROM leaderboard ORDER BY score DESC
Вам нужно 1) получить оценку записи, которую вы пытаетесь присвоить 2) подсчитать количество записей с «лучшим» счетом («лучше» зависит от вашего типа игры. Баскетбол, лучшие результаты лучше. , более низкие баллы лучше.)
Итак, что-то вроде
select records in order for each record score = record.score rank = select count(*) + 1 from table where score_column is better than score display data end for
Проблема в том, что выполнение подсчета (*) на любом значительном количестве данных происходит медленно. Но вы можете видеть, что, как только у вас есть ранг первых двух разных баллов, вы можете определить ранг оставшихся строк в вашем коде без запроса. Но помните: вам, вероятно, нужно учесть связи.