@thesirvlad

Топ пользователей, и вывод текущего места в профиле, как правильно реализовать в MYSQL + PHP?

Всех приветствую! Я - новичок и мне нужно сделать Место в рейтинге, я сделал сортировку по очкам. То есть если у пользователя больше всех очков, он отображается выше всех, но мне ещё нужно добавить типо места. Так же нужно, что бы я их выводил в профиле пользователей
<table style="margin-left: auto;margin-right: auto; margin-top: 20px;">
           <tr><th style="color: black; text-align: center;">Игрок</th><th style="color: black; text-align: center;">Команда</th><th style="color: black;">ROT <i style="cursor: pointer;" title="ROT- Raiting One Tour" class="fas fa-question-circle"></i></th></tr>
           <?php 
db();

$rait = mysqli_query($db, "SELECT `login`, `rating`, `team` FROM `users` ORDER BY  `rating` DESC LIMIT  100");

if(mysqli_num_rows($rait)) {

while ($row = mysqli_fetch_assoc($rait))
 echo '<tr><td>'.$row['login'].'</td><td>'.$row['team'].'</td><td>'.$row['raiting'].'</td></tr>';
}
            ?>
           
       </table>

Заранее спасибо!
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
nokimaro
@nokimaro
Решение на чистом SQL - пронумеровать возвращённые строки через cross join
SELECT 
(@row_number:=@row_number + 1) AS pos, 
`login`, `rating`, `team`
FROM `users`, (SELECT @row_number:=0) AS t 
ORDER BY  `rating` DESC 
LIMIT  100


Либо вывести вести счётчик при выводе на PHP
<table style="margin-left: auto;margin-right: auto; margin-top: 20px;">
           <tr><th style="color: black; text-align: center;">Игрок</th><th style="color: black; text-align: center;">Команда</th><th style="color: black;">ROT <i style="cursor: pointer;" title="ROT- Raiting One Tour" class="fas fa-question-circle"></i></th></tr>
           <?php 
db();

$rait = mysqli_query($db, "SELECT `login`, `rating`, `team` FROM `users` ORDER BY  `rating` DESC LIMIT  100");

if(mysqli_num_rows($rait)) {

$position = 0;
while ($row = mysqli_fetch_assoc($rait))
 echo '<tr><td>'.(++$position).'. '.$row['login'].'</td><td>'.$row['team'].'</td><td>'.$row['raiting'].'</td></tr>';
}
            ?>
           
       </table>


Позиция в рейтинге для профиля = посчитать сколько записей с рейтингом который больше чем текущий рейтинг игрока
SELECT (COUNT(*)+1) as rating_pos FROM users WHERE `rating` > 'рейтинг_текущего_профиля'
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Alexandre888
@Alexandre888
Javascript-разработчик
место_в_рейтинге | имя_игрока | очки

SELECT место_в_рейтинге, имя_игрока, очки
FROM название_таблицы
ORDER BY место_в_рейтинге DESC
-- вывод рейтинга

SELECT место_в_рейтинге
FROM название_таблицы
WHERE имя_игрока = 'имя_игрока'
-- вывод места в рейтинге
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
ad.ru Новосибирск
от 100 000 до 150 000 ₽
от 80 000 до 100 000 ₽
19 сент. 2020, в 12:04
1000 руб./в час
19 сент. 2020, в 11:26
17500 руб./за проект