Я пытаюсь отсортировать баллы разных пользователей по убыванию (по возрастанию). Но в данный момент запрос возвращается в порядке идентификатора пользователя (порядок их появления в базе данных). Я не уверен, что не так с моим кодом?
Пользователь может находиться в нескольких лигах, поэтому он сначала запрашивает лиги, в которых находится конкретный пользователь. С идентификаторами лиг я запрашиваю, чтобы увидеть какие пользователи в каждой из лиг. Затем я спрашиваю, сколько очков у каждого пользователя в этой лиге. В конечном счете, я хочу получить рейтинг пользователя для каждой лиги, но в данный момент запрос к порядку по точкам не работает.
На рисунке показано, как получаются очки. «1635» - это очки пользователей, которые вошли в систему. В первой лиге я пытаюсь отобразить «ранг 2».
// SQL query to see what leagues user is in
$query = mysqli_query($con, "SELECT * FROM UserLeague WHERE UserID='$userid'");
$num = mysqli_num_rows($query);
if($num == 0) {
echo 'You are not in any leagues';
return;
} else {
echo '<div class="pleague-table">';
echo '<div class="pleague-table-header">';
echo '<p>PRIVATE LEAGUE</p>';
echo '<p>CURRENT RANK</p>';
echo '</div>';
}
while($leagueid = mysqli_fetch_assoc($query)) {
$lid = $leagueid['LeagueID'];
// Get all league info that user is in
$query2 = mysqli_query($con, "SELECT * FROM League WHERE LeagueID='$lid'");
// Get all users that is in each league
$queryposition = mysqli_query($con, "SELECT UserID FROM UserLeague WHERE LeagueID='$lid'");
while($getpoints = mysqli_fetch_assoc($queryposition)) {
$uid = $getpoints['UserID'];
// Get each users points in each league
$querypoints = mysqli_query($con, "SELECT * FROM Points WHERE UserID='$uid' ORDER BY total DESC");
while($row = mysqli_fetch_assoc($querypoints)) {
echo $row['total']. '</br>';
}
}
while($leaguename = mysqli_fetch_assoc($query2)) {
echo '<div class="league-link">';
echo $leaguename['Name'];
echo '<a href="#">Options</a>';
echo '</div>';
}
}
'''