【问题标题】:Create multiple tables by cycling through a query通过循环查询创建多个表
【发布时间】:2013-10-25 20:28:54
【问题描述】:

这是我当前的代码: $varVeh=$_POST['Veh_num'];

$sql_HiScores = "SELECT 
     c.course_name as course,
     e.distance as distance, e.score as score,
     e.time as time, e.user as User
   FROM hc_entries e
   LEFT JOIN hc_course c on e.course=c.course_num
   WHERE e.vehicle=$varVeh
   ORDER BY course, score DESC";

$result_HiScores = mysql_query($sql_HiScores);

$sql_vehName="SELECT Veh_name FROM hc_vehicle_type WHERE Veh_num=$varVeh ";
$result_vehName = mysql_query($sql_vehName);
$vehName=mysql_fetch_assoc($result_vehName);

echo "<table><tr><th>Best Scores for ".$vehName['Veh_name']."</th></tr></table>";
echo "<table border='1'>";
echo "<tr><th>Course</th><th>Score</th><th>Distance</th><th>Player</th><th>Time</th></tr>";

while($row = mysql_fetch_array($result_HiScores))
{
    echo "<tr>";  
    echo "<td>" .$row['course'] . "</td>";
    echo "<td>" .$row['score'] . "</td>";
    echo "<td>" .$row['distance'] . "</td>";
    echo "<td>" .$row['User'] . "</td>";
}

echo "</table>";

我认为我必须做的是创建一个查询,从 e.course 中选择 * 来构建一个数组。然后使用数组结果循环浏览现有查询。最后,我想为每门课程显示单独的表格,并将其限制为每门课程的前 5 个结果。

谁能证实或否认我的逻辑,并为我指明方向?

【问题讨论】:

    标签: php mysql loops


    【解决方案1】:

    首先,您不应该使用 mysql_ 函数,它们已被弃用。至少,您应该切换到mysqli_(一个非常简单的切换),或者更好的是,学习如何使用PDO。切换有点不同并且涉及更多,但您的代码会更好,更安全。

    除此之外:您的逻辑非常准确。据我所知,将您的结果限制在一个查询中每门课程的前 5 个结果并不是使用 SQL 轻松完成的事情,因此您的计划很好:查询课程列表,然后循环浏览它们使用您现有的查询,为每门课程运行一次,限制 5 以获得前 5 名。

    您也可以将表格生成保留在此循环中,因为它是每个课程的表格。您希望将 VehName 查询移出循环,因为您只需要运行一次。

    此外,一些未经请求的 PHP 建议:标签之外的任何文本都将直接输出,因此请利用其内置模板和alternative syntax 来使您的表格生成代码更好:

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

    【讨论】:

      【解决方案2】:

      将整个表格 html 放入 while 循环中,并在查询末尾添加 'LIMIT 5'

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-16
        • 2020-06-05
        • 2016-06-19
        • 1970-01-01
        • 1970-01-01
        • 2016-11-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多