Пользователь подписывает команду с нашей программой, а затем вводит количество миль, которые они ходят в день/неделю/и т.д. Кроме того, во время программы мы принимаем небольшие мероприятия. События будут иметь летчики с QR-кодами, и пользователь сканирует код и вводит их информацию. Как только они это сделают, пользователь получает кредит за то, что был на этом мероприятии. На веб-сайте есть система баллов, основанная на том, какие события они посещают, и сколько миль они ходят.
У меня есть две таблицы, в которых хранятся две разные переменные, которые должны суммировать их, а затем каждый из них использует деление для определения точечного значения для этой суммы, а затем помещает его в таблицу лидеров и помещает его в порядке убывания на заработанные очки.
В настоящее время он сортирует их по убыванию, по милям.
Любые идеалы о том, как я могу это исправить? Я думал, может быть, какая-то магия массива, где я храню каждую информацию пользователя в массиве, а затем вытаскиваю ее, но у меня нет идеала, как начать с этого.
Имя пользователя хранится в таблице: Team_Assign
Протянутые мили пользователей хранятся в таблице: Miles
Событие, посещенное пользователем, хранится в таблице: События
Я внутренне соединяю эти три таблицы вместе.
10 миль - 1 балл, 2 - 1 балл.
У Джона 10 миль, и 4 события, которые будут 3 очка Джейн имеет 20 миль и 1 случай, который будет 2,5 очка
В настоящее время он сортирует, у кого больше миль, и я понимаю, почему это так, но я не знаю, как повторить запрос, чтобы он сортировал точки, которые установлены во время цикла while.
Джон 3
Джейн 2,5
Джейн 2,5
Джон 3
<?php
$Count = 0;
$LB_User_Query = " SELECT Miles_User, Team_Assign_Name, SUM(Miles_Amount) AS 'Miles', SUM(Event_Count) AS 'Event_Count2'
FROM Team_Assign
INNER JOIN Miles ON Team_Assign_User = Miles_User
INNER JOIN Event ON Team_Assign_User = Event_User
GROUP BY Miles_User, Team_Assign_User, Team_Assign_Name
ORDER BY Miles, Event_Count2 Desc";
$LB_User_stmt = $conn->prepare($LB_User_Query);
$LB_User_stmt->execute();
$LB_User_stmt->bind_result($Miles_User, $Team_Assign_Name, $Miles, $Event_Count2);
while (mysqli_stmt_fetch($LB_User_stmt))
{
$User_Miles = $Miles;
$Count = $Count + 1;
$Miles_Points_indc = 10;
$Event_Points_indc = 1;
$Miles_Points_Total_1 = $User_Miles / $Miles_Points_indc;
$Miles_Points_Total_2 = $Miles_Points_Total_1 / $Event_Count2;
$Event_Points_Total = $Event_Count2 / $Event_Points_indc;
$Total_Points = $Miles_Points_Total_2 + $Event_Points_Total;
$Total_Points_Round = round($Total_Points, 2);
echo'<tr>';
echo'<td>'.$Count.'</td>
<td>'.$Team_Assign_Name.'</a></td>
<td>'.$Total_Points_Round .'</td>';
echo'</tr>';
}
?>
Вам нужно применить отдельный модификатор desc
к каждому отсортированному столбцу:
$LB_User_Query = " SELECT Miles_User, Team_Assign_Name, SUM(Miles_Amount) AS 'Miles', SUM(Event_Count) AS 'Event_Count2'
FROM Team_Assign
INNER JOIN Miles ON Team_Assign_User = Miles_User
INNER JOIN Event ON Team_Assign_User = Event_User
GROUP BY Miles_User, Team_Assign_User, Team_Assign_Name
ORDER BY Miles DESC, Event_Count2 Desc";
# missing here --------------------^