Pertama-tama, Anda tidak boleh menggunakan fungsi mysql_, mereka sudah usang. Setidaknya, Anda harus beralih ke mysqli_ (peralihan yang cukup mudah), atau lebih baik, pelajari cara menggunakan PDO . Ini sedikit berbeda dan lebih melibatkan untuk beralih, tetapi kode Anda akan lebih baik dan lebih aman untuk itu.
Dengan itu:logika Anda cukup akurat. Membatasi hasil Anda pada 5 hasil teratas untuk setiap kursus dalam satu kueri bukanlah sesuatu yang mudah dilakukan dengan SQL sepengetahuan saya, jadi rencana Anda bagus:kueri daftar kursus, lalu putar dengan kueri Anda yang ada, jalankan sekali untuk setiap kursus, dengan LIMIT 5 untuk mendapatkan 5 teratas.
Anda mungkin juga menyimpan pembuatan tabel dalam loop ini, karena ini adalah tabel per kursus. Anda ingin memindahkan kueri VehName keluar dari loop, karena Anda hanya perlu menjalankannya sekali.
Juga, beberapa saran PHP yang tidak diminta:teks apa pun di luar tag hanya akan dikeluarkan secara langsung, jadi manfaatkan template bawaannya dan sintaks alternatif untuk membuat kode pembuatan tabel Anda lebih bagus:
<?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>