Po pierwsze, nie powinieneś używać funkcji mysql_, są one przestarzałe. Przynajmniej powinieneś przełączyć się na mysqli_ (dość łatwy przełącznik) lub lepiej, naucz się używać PDO . Zmiana jest nieco inna i bardziej skomplikowana, ale Twój kod będzie dla niej lepszy i bezpieczniejszy.
Pomijając to:twoja logika jest całkiem dokładna. Ograniczanie wyników do 5 najlepszych wyników dla każdego kursu w jednym zapytaniu nie jest to łatwe do wykonania za pomocą SQL według mojej wiedzy, więc twój plan jest dobry:zapytaj o listę kursów, a następnie przejdź przez nie z istniejącym zapytaniem, uruchamiając je raz dla każdego kursu, z LIMIT 5, aby uzyskać pierwsze 5.
Równie dobrze możesz zachować generowanie tabeli w tej pętli, ponieważ jest to tabela na kurs. Chciałbyś usunąć zapytanie VehName z pętli, ponieważ wystarczy uruchomić je tylko raz.
Również kilka niechcianych porad PHP:każdy tekst poza znacznikami będzie po prostu wyprowadzany bezpośrednio, więc skorzystaj z jego wbudowanych szablonów i alternatywna składnia aby ulepszyć kod generowania tabeli:
<?php
/* Gather your data here... */
?>
<table>
<tr><th>Best Scores for <?php echo $vehName['Veh_name'] ?></th></tr>
</table>
<table border='1'>
<tr>
<th>Course</th>
<th>Score</th>
<th>Distance</th>
<th>Player</th>
<th>Time</th>
</tr>
<?php while($row = mysql_fetch_array($result_HiScores)): ?>
<tr>
<td><?php echo $row['course'] ?></td>
<td><?php echo $row['score'] ?></td>";
<td><?php echo $row['distance'] ?></td>";
<td><?php echo $row['User'] ?></td>";
</tr>
<?php endwhile; ?>
</table>