prepare(" SELECT c.id, c.code, c.name_th, c.credits, cg.name_th AS group_name FROM courses c JOIN course_groups cg ON c.group_id = cg.id WHERE cg.curriculum_id = ? "); $curriculum_courses->execute([$curriculum_id]); $curriculum_map = []; foreach ($curriculum_courses->fetchAll() as $cc) { $curriculum_map[$cc['code']] = $cc; } $added = 0; $skipped = 0; $check_stmt = $db->prepare("SELECT COUNT(*) FROM student_courses WHERE student_id = ? AND course_code = ? AND source_type = 'transfer'"); foreach ($parsed_courses as $course) { $code = $course['code']; // Only add courses that match the curriculum if (!isset($curriculum_map[$code])) { $skipped++; continue; } $cc = $curriculum_map[$code]; // Skip if already added $check_stmt->execute([$student_id, $code]); if ($check_stmt->fetchColumn() > 0) { $skipped++; continue; } // Add the course as transfer credit $stmt = $db->prepare("INSERT INTO student_courses (student_id, course_id, course_code, course_name_th, credits, lecture_hours, practice_hours, self_study_hours, grade, course_type, source_type, source_file) VALUES (?, ?, ?, ?, ?, ?, ?, ?, 'S', 'เทียบโอนรายวิชา', 'transfer', 'pasted_text')"); $stmt->execute([ $student_id, $cc['id'], $code, $cc['name_th'], $cc['credits'], $course['lecture'], $course['practice'], $course['self_study'] ]); $added++; } $msg = $added > 0 ? "added=$added" : "added=0"; header('Location: ' . BASE_URL . '/students/view.php?id=' . $student_id . '&' . $msg); exit;