prepare("SELECT * FROM schools WHERE id = ?"); $stmt->execute([$school_id]); $school = $stmt->fetch(); $report_type = $_GET['type'] ?? null; $learner_id = $_GET['learner_id'] ?? null; $assessment_id = $_GET['assessment_id'] ?? null; $report_data = null; $learner_info = null; $assessment_info = null; if ($report_type === 'learner' && $learner_id) { // Fetch learner transcript $stmt = $db->prepare("SELECT * FROM learners WHERE id = ? AND school_id = ?"); $stmt->execute([$learner_id, $school_id]); $learner_info = $stmt->fetch(); if ($learner_info) { $stmt = $db->prepare(" SELECT a.name, a.type, a.total_marks, m.marks_obtained, a.created_at FROM marks m JOIN assessments a ON m.assessment_id = a.id WHERE m.learner_id = ? ORDER BY a.created_at DESC "); $stmt->execute([$learner_id]); $report_data = $stmt->fetchAll(); } } elseif ($report_type === 'class' && $assessment_id) { // Fetch class report for an assessment $stmt = $db->prepare("SELECT * FROM assessments WHERE id = ? AND school_id = ?"); $stmt->execute([$assessment_id, $school_id]); $assessment_info = $stmt->fetch(); if ($assessment_info) { $stmt = $db->prepare(" SELECT l.full_name, l.student_id, m.marks_obtained FROM learners l LEFT JOIN marks m ON l.id = m.learner_id AND m.assessment_id = ? WHERE l.school_id = ? AND l.grade = ? ORDER BY l.full_name ASC "); $stmt->execute([$assessment_id, $school_id, $assessment_info['grade']]); $report_data = $stmt->fetchAll(); } } // Fetch lists for selection $stmt = $db->prepare("SELECT id, full_name, grade, student_id FROM learners WHERE school_id = ? ORDER BY grade, full_name"); $stmt->execute([$school_id]); $all_learners = $stmt->fetchAll(); $stmt = $db->prepare("SELECT id, name, grade, type FROM assessments WHERE school_id = ? ORDER BY created_at DESC"); $stmt->execute([$school_id]); $all_assessments = $stmt->fetchAll(); include 'includes/header.php'; ?>
Generate academic transcripts and class performance reports
Academic history for a specific student
Full class results for a specific assessment
= htmlspecialchars($school['location'] ?? 'South Africa') ?>
Generated on: = date('d F Y, H:i') ?>
Name: = htmlspecialchars($learner_info['full_name']) ?>
Student ID: = htmlspecialchars($learner_info['student_id']) ?>
Grade: = htmlspecialchars($learner_info['grade']) ?>
Status: Active
| Date | Assessment | Type | Score | Percentage |
|---|---|---|---|---|
| = date('d M Y', strtotime($row['created_at'])) ?> | = htmlspecialchars($row['name']) ?> | = htmlspecialchars($row['type']) ?> | = $row['marks_obtained'] ?> / = $row['total_marks'] ?> | = round($perc, 1) ?>% |
| Average Performance: | = round($total_perc / $count, 1) ?>% | |||
Grade = htmlspecialchars($assessment_info['grade']) ?> | = htmlspecialchars($assessment_info['type']) ?> | Max Marks: = $assessment_info['total_marks'] ?>
| Student ID | Learner Name | Marks Obtained | Percentage | Status |
|---|---|---|---|---|
| = htmlspecialchars($row['student_id']) ?> | = htmlspecialchars($row['full_name']) ?> | = $has_marks ? $row['marks_obtained'] : 'N/A' ?> | = $has_marks ? ''.round($perc, 1).'%' : '-' ?> | = $perc >= 50 ? 'Pass' : 'Fail' ?> = $perc >= 50 ? 'Pass' : 'Fail' ?> Absent/Pending |
| Class Average: | = round($total_marks / $present_count, 1) ?>% | |||