我有一個從數據庫動態生成的HTML表格。在這個問題Adding rows to a HTML table with dynamic columns可以看到實現這一點的解決方案。動態HTML表格 - 更新單元格行
這工作得很好,但我想指出的所有會話的人蔘加了同一行中的每個星期 - 用下面的代碼,再舉行一次會議出勤成爲附加到HTML表中的另一行。所以,我想是這樣的:
數據庫表像(「周」,「組羣」和「出勤」表)
+---------+-----------+----------+-----------+
| 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 | person_id | given_names | surname | cohort_fk | week_fk | session |
+---------------+-----------+-------------+---------+-----------+---------+---------+
| 1 | 123456 | Bill | Smith | 1 | 1 | 2 |
| 2 | 123456 | Bill | Smith | 1 | 2 | 2 |
| 3 | 753354 | Fred | Jones | 1 | 1 | 1 |
| 4 | 753354 | Fred | Jones | 1 | 2 | 1 |
| 5 | 753354 | Fred | Jones | 1 | 3 | 1 |
+---------------+-----------+-------------+---------+-----------+---------+---------+
而且我正在使用的代碼:
$cohort = $_POST['cohort'];
$year = $_POST['year'];
$query = "SELECT * FROM cohort, week
WHERE week.cohort_fk = cohort.cohort_pk
AND cohort.cohort_year = '$year'
AND cohort.cohort_pk = '$cohort'
ORDER BY week.week_pk";
$result = mysql_query($query, $connection) or die(mysql_error());
echo "<table width='100%' cellpadding='4' cellspacing='0' class='attendance_table'>";
echo "<tr><td class='theadings'></td>";
$second_row = "<tr><td class='theadings'></td>";
$totalcolumn = 1;
while($row = mysql_fetch_assoc($result)){
$weekname = $row["week_name"];
$n_session = $row["sessions"];
$weekpk = $row["week_pk"];
$totalcolumn += $n_session;
echo "<td class='theadings' colspan='$n_session'>$weekname</td>";
for($i=1; $i<=$n_session; $i++){
$second_row .= "<td class='theadings_lab'>Lab $i</td>";
$weeksession[$weekpk][$i] = $totalcolumn - $n_session + $i;
}
}
echo "</tr>";
echo $second_row . "</tr>";
$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'
ORDER BY attendance.attendance_pk";
$result = mysql_query($query, $connection) or die(mysql_error());
while($row = mysql_fetch_assoc($result)){
$name = $row["given_names"] . " " . $row["surname"];
$weekpk = $row["week_pk"];
$sno = $row["session"];
echo "<tr><td class='tborder_person_left'>$name</td>";
for($i=2; $i<=$totalcolumn; $i++){
if($weeksession[$weekpk][$sno] == $i)
echo "<td class='tborder_person_attended'>✔</td>";
else
echo "<td class='tborder_person'>-</td>";
}
echo "</tr>";
}//end while
echo "</table>";
@Kickstart下面是表格與您的代碼的例子。例如,你可以看到Melody Chew和Kit Yeng Melody Chew(同一人)有兩個分開的行。唯一的標識符需要在考勤表中存在的person_id上(道歉以前沒有顯示!我的壞消息還需要注意表格右側的附加列,其中的十字應該在第2周的列下。
感謝這一點,但與您的代碼我仍然在人們參加了另一個會話的HTML表中額外的行。此外,蜱(&#10004)沒有顯示... – IlludiumPu36
@ doydoy44 ...這看起來不錯,但是在匹配名稱時存在問題。一個人的名字在一個出席記錄和下一個出席記錄之間發生變化的情況。發生這種情況時,在html表中會創建另一行,因此有兩行每個都有不同的名稱,但是正確單元格中的刻度會顯示。名稱沒有改變的地方工作正常。你能修改你的代碼,以便唯一標識符是person_id嗎? – IlludiumPu36
請參閱更新OP re我在OP – IlludiumPu36