Mysql
 sql >> Database >  >> RDS >> Mysql

Crea più tabelle scorrendo una query

Prima di tutto, non dovresti usare le funzioni mysql_, sono deprecate. Come minimo, dovresti passare a mysqli_ (un passaggio abbastanza semplice), o meglio, impara a usare PDO . È un po' diverso e più complicato da cambiare, ma il tuo codice sarà migliore e più sicuro per questo.

Detto questo:la tua logica è piuttosto accurata. Limitare i risultati ai primi 5 risultati per ogni corso in una query non è qualcosa che si può fare facilmente con SQL per quanto ne so, quindi il tuo piano è buono:interroga un elenco di corsi, quindi scorreli con la tua query esistente, eseguendola una volta per ogni corso, con un LIMIT 5 per ottenere i primi 5.

Potresti anche mantenere la generazione della tabella all'interno di questo ciclo, poiché è una tabella per corso. Vorresti spostare la query VehName fuori dal ciclo, dal momento che devi eseguirla solo una volta.

Inoltre, alcuni consigli PHP non richiesti:qualsiasi testo al di fuori dei tag verrà semplicemente emesso direttamente, quindi approfitta del suo modello integrato e di sintassi alternativa per rendere più gradevole il codice di generazione delle tabelle:

<?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>