prepare("INSERT INTO teacher_absences (Teacher_ID, Absence_From, Absence_To, Reason) VALUES (?, ?, ?, ?)");
$stmt->bind_param("isss", $Teacher_ID, $Absence_From, $Absence_To, $Reason);
if ($stmt->execute()) {
$success = "Absence reported successfully. You can now find a replacement.";
} else {
$error = "Failed to report absence.";
}
$stmt->close();
}
// Handle deletion of absence and its associated replacement assignments
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['delete_absence_id'])) {
$delete_id = intval($_POST['delete_absence_id']);
// Get absence and teacher ID
$stmt = $mysqli->prepare("SELECT Teacher_ID FROM teacher_absences WHERE Absence_ID = ?");
$stmt->bind_param("i", $delete_id);
$stmt->execute();
$absence = $stmt->get_result()->fetch_assoc();
$stmt->close();
if ($absence) {
$absent_teacher_id = $absence['Teacher_ID'];
// Delete replacements
$delRep = $mysqli->prepare("DELETE FROM teacher_replacement_assignments WHERE Absent_Teacher_ID = ?");
$delRep->bind_param("i", $absent_teacher_id);
$delRep->execute();
$delRep->close();
// Delete absence
$delAbs = $mysqli->prepare("DELETE FROM teacher_absences WHERE Absence_ID = ?");
$delAbs->bind_param("i", $delete_id);
if ($delAbs->execute()) {
$success = "Absence and any replacements deleted.";
} else {
$error = "Failed to delete absence.";
}
$delAbs->close();
} else {
$error = "Absence record not found.";
}
}
?>
Course Management System | Report Teacher Absence
Report Teacher Absence
Notification! ".$mesg."
";
}
?>
$success
"; ?>
$error
"; ?>
Teacher
From
To
Reason
Assigned To
Action
Delete
query("
SELECT
a.Absence_ID, a.Absence_From, a.Absence_To, a.Reason,
t.First_Name AS AbsentFirst, t.Last_Name AS AbsentLast,
rtp.First_Name AS ReplacerFirst, rtp.Last_Name AS ReplacerLast,
tra.Replacing_Teacher_ID
FROM teacher_absences a
JOIN teacher_profile t ON t.Teacher_ID = a.Teacher_ID
LEFT JOIN teacher_replacement_assignments tra
ON tra.Absent_Teacher_ID = a.Teacher_ID
AND a.Absence_From = tra.Replacement_From
AND a.Absence_To = tra.Replacement_To
LEFT JOIN teacher_profile rtp ON rtp.Teacher_ID = tra.Replacing_Teacher_ID
GROUP BY a.Absence_ID
ORDER BY a.Absence_From DESC
");
while ($row = $absences->fetch_assoc()) {
$assignedTo = !empty($row['ReplacerFirst'])
? $row['ReplacerFirst'] . ' ' . $row['ReplacerLast']
: 'Not Assigned';
$replacementAssigned = !empty($row['ReplacerFirst']); // Or check ReplacementExists == 1
echo '