Student Result Portal
= 70) {
return array('grade' => 'A', 'remark' => 'Excellent', 'class' => 'grade-A');
} elseif ($score >= 60) {
return array('grade' => 'B', 'remark' => 'Good', 'class' => 'grade-B');
} elseif ($score >= 55) {
return array('grade' => 'C', 'remark' => 'Credit', 'class' => 'grade-C');
} elseif ($score >= 50) {
return array('grade' => 'D', 'remark' => 'Pass', 'class' => 'grade-D');
} else {
return array('grade' => 'F', 'remark' => 'Fail', 'class' => 'grade-F');
}
}
// Function to determine overall grade
function getOverallGrade($average) {
if ($average >= 70) return 'A';
elseif ($average >= 60) return 'B';
elseif ($average >= 55) return 'C';
elseif ($average >= 50) return 'D';
else return 'F';
}
if(isset($_POST['filter'])) {
// Debug: Show what we're receiving
echo "";
$regno = $_POST['regno'];
$acyear = $_POST['acyear'];
$term = $_POST['term'];
$klass = $_POST['klass'];
try {
// Get student information from students_info table
$student_info_query = "SELECT * FROM students_info WHERE regno = :regno";
$student_info_stmt = $DBcon->prepare($student_info_query);
$student_info_stmt->execute([':regno' => $regno]);
$student_info = $student_info_stmt->fetch(PDO::FETCH_ASSOC);
// First, let's check if the student exists with these criteria
$check_query = "SELECT COUNT(*) as count FROM marks
WHERE regno = :regno
AND acyear = :acyear
AND term = :term
AND klass = :klass";
$check_stmt = $DBcon->prepare($check_query);
$check_stmt->execute([
':regno' => $regno,
':acyear' => $acyear,
':term' => $term,
':klass' => $klass
]);
$check_result = $check_stmt->fetch(PDO::FETCH_ASSOC);
echo "";
if($check_result['count'] > 0) {
// Get student's results
$student_query = "SELECT * FROM marks
WHERE regno = :regno
AND acyear = :acyear
AND term = :term
AND klass = :klass";
$student_stmt = $DBcon->prepare($student_query);
$student_stmt->execute([
':regno' => $regno,
':acyear' => $acyear,
':term' => $term,
':klass' => $klass
]);
$student_results = $student_stmt->fetchAll(PDO::FETCH_ASSOC);
// Get all students in the same class for comparison
$class_query = "SELECT DISTINCT regno FROM marks
WHERE acyear = :acyear
AND term = :term
AND klass = :klass";
$class_stmt = $DBcon->prepare($class_query);
$class_stmt->execute([
':acyear' => $acyear,
':term' => $term,
':klass' => $klass
]);
$class_students = $class_stmt->fetchAll(PDO::FETCH_ASSOC);
// Calculate class highest and lowest scores per subject
$subject_stats = array();
$subjects_query = "SELECT DISTINCT subject FROM marks
WHERE acyear = :acyear
AND term = :term
AND klass = :klass";
$subjects_stmt = $DBcon->prepare($subjects_query);
$subjects_stmt->execute([
':acyear' => $acyear,
':term' => $term,
':klass' => $klass
]);
$subjects = $subjects_stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($subjects as $subject_row) {
$subject = $subject_row['subject'];
$stats_query = "SELECT MAX(test+exam) as max_score, MIN(test+exam) as min_score
FROM marks
WHERE acyear = :acyear
AND term = :term
AND klass = :klass
AND subject = :subject";
$stats_stmt = $DBcon->prepare($stats_query);
$stats_stmt->execute([
':acyear' => $acyear,
':term' => $term,
':klass' => $klass,
':subject' => $subject
]);
$stats_row = $stats_stmt->fetch(PDO::FETCH_ASSOC);
$subject_stats[$subject] = array(
'max' => $stats_row['max_score'] ?? 0,
'min' => $stats_row['min_score'] ?? 0
);
}
// Calculate student averages for class position
$student_averages = array();
foreach($class_students as $class_student) {
$student_regno = $class_student['regno'];
$avg_query = "SELECT AVG(test+exam) as avg_score
FROM marks
WHERE regno = :regno
AND acyear = :acyear
AND term = :term
AND klass = :klass";
$avg_stmt = $DBcon->prepare($avg_query);
$avg_stmt->execute([
':regno' => $student_regno,
':acyear' => $acyear,
':term' => $term,
':klass' => $klass
]);
$avg_row = $avg_stmt->fetch(PDO::FETCH_ASSOC);
$student_averages[$student_regno] = $avg_row['avg_score'] ?? 0;
}
// Sort students by average (descending)
arsort($student_averages);
// Find current student's position
$position = 1;
foreach($student_averages as $reg => $avg) {
if($reg == $regno) {
break;
}
$position++;
}
// Calculate student's total average
$student_total = 0;
$subject_count = count($student_results);
foreach($student_results as $row) {
$student_total += ($row['test'] + $row['exam']);
}
$student_average = $subject_count > 0 ? $student_total / $subject_count : 0;
?>
Pupil's Progress Report Sheet
Pupil's Progress Report Sheet
A (70 and above)
B (60 - 69)
C (55 - 59)
D (50 - 54)
F (49 and below)
No Photo
Student Name:
Registration No:
Academic Year:
Class:
Term:
Admission Year:
Class Position
of
Average Score
%
Total Score
Overall Grade
| SUBJECT |
TEST SCORE |
EXAM SCORE |
TOTAL |
CLASS HIGHEST |
CLASS LOWEST |
GRADE |
REMARK |
|
|
|
|
|
|
|
|
Total Score:
Number of Subjects:
Average Score: %
Overall Grade:
_________________________
Class Teacher
_________________________
Principal
_________________________
Date:
OFFICIAL STAMP AREA

No results found for the selected criteria. Please check:
';
echo 'Registration Number: ' . $regno . '
';
echo 'Academic Year: ' . $acyear . '
';
echo 'Term: ' . $term . '
';
echo 'Class: ' . $klass . '
';
echo 'Make sure the student has marks entered for these criteria.';
echo '
';
}
} catch(PDOException $e) {
echo '
Database error: ' . $e->getMessage() . '