सबसे पहले, आपको mysql_ फ़ंक्शंस का उपयोग नहीं करना चाहिए, उन्हें बहिष्कृत कर दिया गया है। कम से कम, आपको mysqli_ पर स्विच करना चाहिए (एक बहुत आसान स्विच), या बेहतर, PDO का उपयोग करना सीखें . यह स्विच करने के लिए थोड़ा अलग और अधिक शामिल है, लेकिन आपका कोड इसके लिए बेहतर और सुरक्षित होगा।
उस रास्ते से:आपका तर्क बहुत सटीक है। अपने परिणामों को शीर्ष 5 परिणामों तक सीमित करना प्रत्येक पाठ्यक्रम के लिए एक प्रश्न में ऐसा कुछ नहीं है जो आसानी से SQL के साथ मेरी जानकारी में किया जाता है, इसलिए आपकी योजना अच्छी है:पाठ्यक्रमों की एक सूची पूछें, फिर अपनी मौजूदा क्वेरी के साथ उनके माध्यम से चक्र करें, प्रत्येक पाठ्यक्रम के लिए इसे एक बार चलाएं, प्राप्त करने के लिए LIMIT 5 के साथ शीर्ष 5.
आप टेबल जनरेशन को इस लूप के भीतर भी रख सकते हैं, क्योंकि यह टेबल-प्रति-कोर्स है। आप VehName क्वेरी को लूप से बाहर ले जाना चाहेंगे, क्योंकि आपको इसे केवल एक बार चलाने की आवश्यकता है।
साथ ही, कुछ अवांछित PHP सलाह:टैग के बाहर कोई भी टेक्स्ट सीधे आउटपुट होगा, इसलिए इसके बिल्ट-इन-टेम्पलेटिंग और वैकल्पिक वाक्य रचना अपने टेबल जनरेशन कोड को बेहतर बनाने के लिए:
<?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>