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 = []; foreach ($teacher_schedule_raw as $lesson) { $day_idx = $lesson['day_of_week']; // Use the 0-indexed value directly if (!isset($teacher_timetable[$day_idx])) { $teacher_timetable[$day_idx] = []; } $teacher_timetable[$day_idx][$lesson['timeslot_id']] = $lesson; } // Gemini: Log the final structure error_log("Final teacher_timetable structure: " . print_r($teacher_timetable, true)); ?> Teacher Timetable - Haki Schedule

Teacher Timetable

Timetable for

$day): ?>
Time

-
Break

No lessons scheduled for this teacher.