我创建了一个在线时间表,它工作正常,用户或我可以通过使用一些数据添加新的时间表行,我的最终结果就像。
这是我的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
- 10-11
- Maths
- Bella
现在我如何将这些数据显示为表格,标题为LDC batch
,重复一遍,然后time
subject
和teacher
信息与表格一起显示。< / p>
答案 0 :(得分:4)
此处的一个选项是提供一个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