【问题标题】:How to display data from MySQL如何显示来自 MySQL 的数据
【发布时间】:2016-09-13 22:49:54
【问题描述】:

我创建了一个在线时间表,它工作正常,用户或我可以使用一些数据添加新的时间表行,我的最终结果是这样的。

这是我的 SQL 查询(请不要警告我使用 MySQLi 或 PDO,我知道它们,但这是一个私有应用程序,我可以编写不安全的代码。)

 $date = date("d/m/y");
    $sql = "SELECT * FROM `s_timetable` WHERE `date` = '$date'";
    $res = mysql_query($sql) or die(mysql_error());

     while ($fetch_data = mysql_fetch_array($res)) {
        echo "<tr>";
        echo "<td>" .$fetch_data['batch_info']. "</td>";
        echo "<td>" .$fetch_data['class_info']. "</td>";
        echo "<td>" .$fetch_data['subject_info']. "</td>";
        echo "<td>" .$fetch_data['teacher_info'].  "</td>";
        echo "</tr>";
     }
   ?>

但是在向数据库查询后,我得到了很多具有相同值的结果,我怎样才能将它们显示为组。
示例:
LDC batch - 08:09 - science - Ashok B.
LDC batch - 09-10 - English - Jaky
LDC batch - @987654333 987654332@ - Bella

现在我如何将这些数据显示为表格,标题为LDC batch,因为它会全部重复,然后timesubjectteacher 带有表格正文的信息。

【问题讨论】:

  • @HimanshuPatel Yaa 但是会有几个不同的批次,例如,如果有 10 个不同的批次,每个批次有 5-10 行,关于班级、学科、老师。所以在这个例子中,总共有 50 行,所有批次名称都会重复,我只想将批次名称显示为表的标题或表头,并在表体下显示特定于该行的结果,但问题是我该怎么做.
  • 了解mysql group by,你会得到已经分组的值
  • @LelioFaieta 我之前尝试过这个查询,但我不知道如何显示该值。 SELECT * FROM s_timetable` WHERE date = '$date' GROUP BY batch_info;

标签: php mysql


【解决方案1】:

这里的一个选项是呈现一个 3 列的 HTML 表格,其中包含每个批次的时间、主题和教师数据。当结果集中的批次类型发生变化时,可以打印一个新的行作为表头。

$header = "";
while ($fetch_data = mysql_fetch_array($res)) {
    if ($header = "" || $header != $fetch_data['batch_info']) {
        echo "<tr><td colspan=\"3\">".$fetch_data['batch_info']."</td></tr>";
        $header = $fetch_data['batch_info'];
    }
    echo "<tr>";
    echo "<td>" .$fetch_data['class_info']. "</td>";
    echo "<td>" .$fetch_data['subject_info']. "</td>";
    echo "<td>" .$fetch_data['teacher_info'].  "</td>";
    echo "</tr>";
 }

更新:

正如@apokryfos 所指出的,您应该按batch_info 列对结果集进行排序,以确保属于同一批次的记录始终相邻。所以你的查询可能变成:

SELECT *
FROM s_timetable
WHERE date = '$date'
ORDER BY batch_info

【讨论】:

  • 为了安全起见,我还要order by batch_info
  • @apokryfos 我已经尝试过了,但它似乎无法解决这个问题,你能分享你的方法的代码吗?
  • @Jaky “不工作”是什么意思?它只是您查询末尾的order by batch_info
  • @LelioFaieta 我的意思是当我添加order by batch_info 时,我只得到了 2-2 行,而不是单个批次中的所有行。
  • @apokryfos 为什么我只得到 2-2 行而不是单个批处理表中的所有(在某些批次中大约 8-10 行)行。
猜你喜欢
  • 2018-12-03
  • 2012-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-23
  • 1970-01-01
  • 2021-01-20
  • 2018-04-14
相关资源
最近更新 更多