我正在使用下面的代码(作为上一个问题的解决方案提供将 mySQL 记录显示为 HTML 表列 https://stackoverflow.com/questions/21870246/display-mysql-records-as-html-table-columns) 生成一个 HTML 表,例如:
根据这些表:
周名称位于表“week”中,每周记录还包含该周的会话数:
+---------+-----------+----------+-----------+
| week_pk | week_name | sessions | cohort_fk |
+---------+-----------+----------+-----------+
| 1 | Week 1 | 3 | 1 |
| 2 | Week 2 | 2 | 1 |
| 3 | Week 3 | 1 | 1 |
+---------+-----------+----------+-----------+
+-----------+-------------+-------------+-------------+
| cohort_pk | cohort_name | cohort_code | cohort_year |
+-----------+-------------+-------------+-------------+
| 1 | Some name | MICR8976 | 2014 |
+-----------+-------------+-------------+-------------+
我现在想扩展它,以将与会者显示为会话行下的附加表行,并指示他们参加了哪个会话。出席表为:
+---------------+-------------+---------+-----------+---------+---------+
| attendance_pk | given_names | surname | cohort_fk | week_fk | session |
+---------------+-------------+---------+-----------+---------+---------+
| 1 | Bill | Smith | 1 | 2 | 2 |
| 2 | Fred | Jones | 1 | 1 | 1 |
+---------------+-------------+---------+-----------+---------+---------+
生成的 HTML 表格将类似于:
无论如何,请帮助修改下面的代码以获得如上图所示的结果。
$cohort = '1';
$year = '2014';
$query = "SELECT * FROM cohort, week, attendance
WHERE week.cohort_fk = cohort.cohort_pk
AND attendance.week_fk = week.week_pk
AND attendance.cohort_fk = cohort.cohort_pk
AND cohort.cohort_year = '$year'
AND cohort.cohort_pk = '$cohort'";
$result = mysql_query($query, $connection) or die(mysql_error());
echo "<table border='1'>";
echo "<tr><td>Name</td>";
$second_row = "<tr><td>Session</td>";
while($row = mysql_fetch_assoc($result)){
$weekname = $row["week_name"];
$n_session = $row["sessions"];
echo "<td colspan='$n_session'>$weekname</td>";
for($i=1; $i<=$n_session; $i++){
$second_row .= "<td>S$i</td>";
}
}
echo "</tr>";
echo "$second_row</tr>";
echo "</table>";
?>