Я выполняю запрос по трем столбцам; один столбец содержит текст, остальные два содержат числа. Я делаю расчет на этих числах, чтобы получить новый номер с именем $ average. Затем я выплевываю результат в таблицу html. Строки в таблице сортируются в том порядке, в котором они выходят из базы данных. Я пытаюсь сортировать таблицу так, чтобы данные отображались с наивысшего значения $ average до самого низкого (при этом все еще правильно связаны с правильным текстовым значением из первого столбца).
Я пробовал некоторые asort
и вещи foreach
, но мне удалось добиться ошибок.
Любые идеи, как я это делаю? Благодарю.
Это текущее состояние игры:
/ db query if (!$result = mysqli_query($link,"SELECT quiz_name, quiz_attempts, cumulative_score FROM scoredata")) { echo("There was a problem: " . mysqli_error($link)); exit(); } ... // got results? if(mysqli_num_rows($result) >= 1) { $output = ""; $output .= "<table>\n"; $output .= "<tr><th>Quiz name</th> <th>Played</th> <th>Avg. score</th></tr>\n"; while($row = mysqli_fetch_array($result)) { $output .= "<tr><td>".str_replace('_', ' ', $row['quiz_name']) . "</td>"; $output .= "<td>" . $row['quiz_attempts'] . "</td>"; // calculate average score $average = $row['cumulative_score']/$row['quiz_attempts']; $output .= "<td>" . round($average,2) . "</td></tr>"; } $output .= "</table>\n"; echo $output; } ...
Вы можете выполнить расчет и сортировку в своем запросе:
SELECT quiz_name, quiz_attempts, cumulative_score, (cumulative_score/quiz_attempts) as score_avg FROM scoredata ORDER BY score_avg DESC
Ты можешь
Сделайте этот запрос
SELECT quiz_name, quiz_attempts, cumulative_score, cumulative_score / quiz_attempts as avg_score FROM scoredata ORDER BY avg_score