Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Crie várias tabelas percorrendo uma consulta


Em primeiro lugar, você não deveria estar usando as funções mysql_, elas estão obsoletas. No mínimo, você deve mudar para mysqli_ (uma troca bem fácil), ou melhor, aprenda a usar o PDO . É um pouco diferente e mais complicado mudar, mas seu código será melhor e mais seguro para isso.

Com isso fora do caminho:sua lógica é bastante precisa. Limitando seus resultados aos 5 principais resultados para cada curso em uma consulta não é algo que seja feito facilmente com SQL que eu saiba, então seu plano é bom:consulte uma lista de cursos e, em seguida, percorra-os com sua consulta existente, executando-a uma vez para cada curso, com um LIMIT 5 para obter os 5 superiores.

Você também pode manter a geração da tabela dentro desse loop, já que é uma tabela por curso. Você gostaria de mover a consulta VehName para fora do loop, pois você só precisa executá-la uma vez.

Além disso, alguns conselhos não solicitados do PHP:qualquer texto fora das tags será gerado diretamente, portanto, aproveite seu modelo interno e sintaxe alternativa para tornar seu código de geração de tabela mais agradável:
<?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>