prepare("SELECT * FROM teachers WHERE school_id = ? ORDER BY name"); $stmt->execute([$school_id]); return $stmt->fetchAll(PDO::FETCH_ASSOC); } function get_timeslots($pdo) { return $pdo->query("SELECT * FROM timeslots ORDER BY start_time")->fetchAll(PDO::FETCH_ASSOC); } function get_teacher_schedule($pdo, $teacher_id, $school_id) { $stmt = $pdo->prepare(" SELECT s.day_of_week, s.timeslot_id, s.lesson_display_name, c.name as class_name, s.is_double, s.is_elective, s.is_horizontal_elective FROM schedules s JOIN classes c ON s.class_id = c.id JOIN schedule_teachers st ON s.id = st.schedule_id WHERE st.teacher_id = :teacher_id AND c.school_id = :school_id "); $stmt->execute([':teacher_id' => $teacher_id, ':school_id' => $school_id]); return $stmt->fetchAll(PDO::FETCH_ASSOC); } // --- Main Logic --- $pdoconn = db(); $school_id = $_SESSION['school_id']; $role = $_SESSION['role']; $user_id = $_SESSION['user_id']; $teachers = []; if ($role === 'admin') { $stmt = $pdoconn->prepare("SELECT * FROM teachers WHERE school_id = ? ORDER BY name"); $stmt->execute([$school_id]); $teachers = $stmt->fetchAll(PDO::FETCH_ASSOC); } else { // Teacher $stmt = $pdoconn->prepare("SELECT * FROM teachers WHERE user_id = ? AND school_id = ?"); $stmt->execute([$user_id, $school_id]); $teachers = $stmt->fetchAll(PDO::FETCH_ASSOC); } $timeslots = get_timeslots($pdoconn); $days_of_week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']; $selected_teacher_id = null; if ($role === 'admin') { $selected_teacher_id = isset($_GET['teacher_id']) ? $_GET['teacher_id'] : null; } else { // Teacher if (!empty($teachers)) { $selected_teacher_id = $teachers[0]['id']; } } $selected_teacher_name = ''; $teacher_schedule_raw = []; if ($selected_teacher_id) { foreach ($teachers as $teacher) { if ($teacher['id'] == $selected_teacher_id) { $selected_teacher_name = $teacher['name']; break; } } $teacher_schedule_raw = get_teacher_schedule($pdoconn, $selected_teacher_id, $school_id); // Gemini: Log the data for debugging error_log("--- Teacher Timetable Debug ---"); error_log("Selected Teacher ID: " . print_r($selected_teacher_id, true)); error_log("Raw schedule data from DB: " . print_r($teacher_schedule_raw, true)); } // Organize schedule for easy display $teacher_timetable = array_fill(0, count($days_of_week), []); foreach ($timeslots as $timeslot) { if (!$timeslot['is_break']) { foreach ($days_of_week as $day_idx => $day) { $teacher_timetable[$day_idx][$timeslot['id']] = null; } } } foreach ($teacher_schedule_raw as $lesson) { $day_idx = $lesson['day_of_week'] - 1; // Adjust for 0-based array index $timeslot_id = $lesson['timeslot_id']; if (isset($teacher_timetable[$day_idx]) && isset($teacher_timetable[$day_idx][$timeslot_id])) { $teacher_timetable[$day_idx][$timeslot_id] = $lesson; } } ?> Teacher Timetable - Haki Schedule

Teacher Timetable

Timetable for

$day): ?>
Time

-
Break

No lessons scheduled for this teacher.