Zunächst einmal sollten Sie die mysql_-Funktionen nicht verwenden, sie sind veraltet. Zumindest sollten Sie zu mysqli_ wechseln (ein ziemlich einfacher Wechsel), oder besser, lernen Sie, wie man PDO verwendet . Der Wechsel ist etwas anders und aufwändiger, aber Ihr Code wird dadurch besser und sicherer.
Damit aus dem Weg geräumt:Ihre Logik ist ziemlich genau. Beschränken Sie Ihre Ergebnisse auf die 5 besten Ergebnisse für jeden Kurs in einer Abfrage ist meines Wissens nach mit SQL nicht einfach zu bewerkstelligen, daher ist Ihr Plan gut:Fragen Sie eine Liste von Kursen ab, durchlaufen Sie sie dann mit Ihrer vorhandenen Abfrage und führen Sie sie einmal für jeden Kurs aus, um ein LIMIT von 5 zu erhalten die Top 5.
Sie können die Tabellengenerierung auch innerhalb dieser Schleife belassen, da es sich um eine Tabelle pro Kurs handelt. Sie sollten die VehName-Abfrage aus der Schleife entfernen, da Sie diese nur einmal ausführen müssen.
Außerdem einige unaufgeforderte PHP-Ratschläge:Jeglicher Text außerhalb der Tags wird einfach direkt ausgegeben, also nutzen Sie die eingebauten Vorlagen und den alternative Syntax um Ihren Tabellengenerierungscode schöner zu machen:
<?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>