Za prvé, neměli byste používat funkce mysql_, jsou zastaralé. Přinejmenším byste měli přejít na mysqli_ (docela snadný přepínač), nebo lépe, naučte se používat CHOP . Přepínání je trochu jiné a složitější, ale váš kód pro to bude lepší a bezpečnější.
S tím mimo:vaše logika je docela přesná. Omezte své výsledky na 5 nejlepších výsledků pro každý kurz v jednom dotazu není něco, co by se dalo snadno provést pomocí SQL, pokud je mi známo, takže váš plán je dobrý:dotazujte se na seznam kurzů, poté je procházejte se svým existujícím dotazem, spusťte jej jednou pro každý kurz s LIMIT 5, abyste získali top 5.
Můžete také ponechat generování tabulky v této smyčce, protože se jedná o stůl za kurz. Dotaz VehName byste chtěli přesunout ze smyčky, protože jej stačí spustit pouze jednou.
Také několik nevyžádaných rad PHP:jakýkoli text mimo tagy bude vydán přímo, takže využijte jeho vestavěné šablony a alternativní syntaxe aby byl váš kód pro generování tabulky hezčí:
<?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>