prepare("INSERT INTO assessments (name, type, total_marks, grade, school_id) VALUES (?, ?, ?, ?, ?)"); $stmt->execute([ $_POST['name'], $_POST['type'], $_POST['total_marks'], $_POST['grade'], $school_id ]); $message = "Assessment created successfully."; } catch (Exception $e) { $message = "Error: " . $e->getMessage(); } } elseif ($_POST['action'] === 'save_marks') { try { $db->beginTransaction(); $assessment_id = $_POST['assessment_id']; $stmt = $db->prepare("INSERT INTO marks (assessment_id, learner_id, marks_obtained) VALUES (:aid, :lid, :marks) ON DUPLICATE KEY UPDATE marks_obtained = VALUES(marks_obtained)"); foreach ($_POST['marks'] as $learner_id => $marks) { if ($marks !== '') { $stmt->execute([ 'aid' => $assessment_id, 'lid' => $learner_id, 'marks' => $marks ]); } } $db->commit(); $message = "Marks saved successfully."; } catch (Exception $e) { $db->rollBack(); $message = "Error: " . $e->getMessage(); } } } // Fetch Assessments for this school $stmt = $db->prepare("SELECT * FROM assessments WHERE school_id = ? ORDER BY created_at DESC"); $stmt->execute([$school_id]); $assessments = $stmt->fetchAll(); // If an assessment is selected for grading $selected_assessment = null; $learners_to_grade = []; if (isset($_GET['grade_id'])) { $stmt = $db->prepare("SELECT * FROM assessments WHERE id = ? AND school_id = ?"); $stmt->execute([$_GET['grade_id'], $school_id]); $selected_assessment = $stmt->fetch(); if ($selected_assessment) { // Fetch learners in this grade and their existing marks $stmt = $db->prepare(" SELECT l.*, m.marks_obtained FROM learners l LEFT JOIN marks m ON l.id = m.learner_id AND m.assessment_id = :aid WHERE l.school_id = :sid AND l.grade = :grade ORDER BY l.full_name ASC "); $stmt->execute([ 'aid' => $selected_assessment['id'], 'sid' => $school_id, 'grade' => $selected_assessment['grade'] ]); $learners_to_grade = $stmt->fetchAll(); } } include 'includes/header.php'; ?>

Assessment Tracking

Record and monitor learner performance

Assessments
No assessments created.
( pts)
Capture Marks:
Grade | Max Marks:
Learner Name Score /
No learners found for Grade in this school.

Select an assessment from the list to record marks.