@BronZo

PHP + MySQL: Как присвоить позицию в таблице после сортировки?

Всех приветствую!
Есть таблица mysql формата:
| id |...nick....| jobs | distance | totalmass |
| 1 | player1 | 16....| 3791......| 320...........|
| 2 | player2 | 32....| 12032....| 921...........|
| 3 | player3 | 14....| 4244......| 452...........|

Мне нужно отсортировать таблицу (по убыванию) и вывести на сайте в профиле игрока информацию вида:
Player1
Позиция 2 по колонке jobs
Позиция 3 по колонке distance
Позиция 3 по колонке totalmass

Отсортировать и вывести всех или часть игроков - с этим понятно. А вот как сделать присвоение номера позиции по каждой сортировке и необходимо ли создавать дополнительные колонки записывая туда информацию о позиции?
Я в этом новичок, сильно тапками на кидайте=)
  • Вопрос задан
  • 271 просмотр
Решения вопроса 1
initrd0
@initrd0
Это я =)
Можно так:
<?
$nick = 'Player1';//твой ник
$q = mysql_fetch_assoc(mysql_query("SELECT * FROM `таблица` WHERE `nick` = '".$nick."'"));
$jobs = mysql_result(mysql_query("SELECT COUNT(`id`) FROM `таблица` WHERE `jobs` > '".$q['jobs']."'"), 0);
$distance= mysql_result(mysql_query("SELECT COUNT(`id`) FROM `таблица` WHERE `distance` > '".$q['distance']."'"), 0);
$totalmass = mysql_result(mysql_query("SELECT COUNT(`id`) FROM `таблица` WHERE `totalmass` > '".$q['totalmass']."'"), 0);
echo 'Позиция '.$jobs.' по колонке jobs<br/>';
echo 'Позиция '.$distance.' по колонке distance<br/>';
echo 'Позиция '.$totalmass .' по колонке totalmass ';
?>


но как-то много запросов.. возможно есть более удачное решение
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
создать отдельные поля вида jobs_position, distance_position итд
периодически обновлять их по крону
Ответ написан
Комментировать
webinar
@webinar Куратор тега PHP
Учим yii: https://youtu.be/-WRMlGHLgRg
3 запроса с разной сортировкой. Так что бы ключом в массиве была позиция.
При выводе ставить ключ, для массива содержащего user_id нужного пользователя
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы