Intereting Posts
Неустранимая ошибка: вызов неопределенной функции openssl_random_pseudo_bytes () Перечислить NSDictionary с ключами и объектами, PHP-стиль Можете ли вы присвоить значения константам с знаком равенства после использования, определенных в php? Как обновить имена столбцов CSV с заголовком таблицы базы данных Добавление ведущего 0 в php Как вставить несколько значений счета в codeigniter Использование createNativeQuery для объединения двух объектов без внешнего ключа PHP null и copy-on-write быстрый способ получить родительский ключ массива в многомерных массивах с php Laravel updateOrCreate общее поле ошибки post_id не существует Изменения в файлах cookie Facebook и oauth 2.0 PHP-код запускается только один раз внутри javascript setInterval Автозагрузка в постгресах с использованием PDO Symfony 1.4 с TCPDF: как получить данные из базы данных и показать их как .pdf-файл? Обновить токен доступа пользователя к пользователю без вмешательства пользователя

php, сортировать массив из mysql

Я выполняю запрос по трем столбцам; один столбец содержит текст, остальные два содержат числа. Я делаю расчет на этих числах, чтобы получить новый номер с именем $ 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 

Ты можешь

  • пусть db выполняет сортировку (как предполагают другие плакаты)
  • сортируйте данные самостоятельно (как вы пытаетесь сделать)
  • пусть пользователь сортирует данные через функции JavaScript. Мой любимый сайт: http://www.javascripttoolbox.com/lib/table/

Сделайте этот запрос

  SELECT quiz_name, quiz_attempts, cumulative_score, cumulative_score / quiz_attempts as avg_score FROM scoredata ORDER BY avg_score