Intereting Posts
Не найдено ни одного маршрута для «GET /» Symfony при входе в систему Запуск приложения Windows Speech SDK в PHP Сохранить новое значение в массиве сеансов Laravel Повторное использование одной ручки. Большое увеличение производительности? Цель обучения C (Cocoa) для программирования iPhone, поступающего из веб-разработки? Запрос MYSQL с разбивкой по страницам PHP Laravel 4: две разные страницы просмотра для одного URI, основанного на статусе auth Получение внутреннего HTML-элемента DomElement в PHP Как выбрать идентификатор строки mysql для предложения WHERE в UPDATE, INSERT, DELETE через php? Атрибут сортировки по умолчанию для модели Doctrine Обслуживание файла через PHP-скрипт и безопасная замена этого файла на лету исправление cakephp .htaccess / mod_rewrite для настроек общего хостинга Вызов функции-члена fetch_assoc () для не-объекта Как я могу поймать ошибку, вызванную mail ()? PDO Error – PDOException 'с сообщением' SQLSTATE : общая ошибка '

Создание лидеров, как я буду показывать показ ранга / позиции?

Я создаю таблицы лидеров, которые будут отображать следующее: 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 

Проблема в том, что выполнение подсчета (*) на любом значительном количестве данных происходит медленно. Но вы можете видеть, что, как только у вас есть ранг первых двух разных баллов, вы можете определить ранг оставшихся строк в вашем коде без запроса. Но помните: вам, вероятно, нужно учесть связи.