Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Erstellen Sie mehrere Tabellen, indem Sie eine Abfrage durchlaufen

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>