-
-
Admin Dashboard
-
Welcome to the admin panel. Here you can manage the content of the application.
-
-
+
+
+
+ Institution Dashboard
+
+
+ Manage learning insights, coding challenges, and certifications from one place.
+
-
-
+
+
+
+
+
+
+
Learning Style Assessment
+
+ Understand how students learn through pattern-based assessments
+ without marks or exam pressure.
+
+
+
+
+
+
+
Coding Challenges
+
+ Structured coding tracks designed to build logical thinking
+ and real-world problem-solving skills.
+
+
+
+
+
+
+
Certificates
+
+ Generate professional participation certificates
+ recognizing student effort and demonstrated skills.
+
+
+
+
+
+
+
+
+
+
diff --git a/admin/login.php b/admin/login.php
deleted file mode 100644
index 0a9b3bc..0000000
--- a/admin/login.php
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
-
-
-
-
-
-
Admin Login
-
-
-
-
-
-
diff --git a/admin_dashboard.php b/admin_dashboard.php
new file mode 100644
index 0000000..df7cdd7
--- /dev/null
+++ b/admin_dashboard.php
@@ -0,0 +1,196 @@
+connect_error) {
+ die("DB Connection failed");
+}
+
+/* GET VIEW FILTER */
+$view = $_GET['view'] ?? 'active';
+
+/* COUNTS */
+$total = $conn->query("SELECT COUNT(*) c FROM institutions WHERE deleted_at IS NULL")->fetch_assoc()['c'];
+$active = $conn->query("SELECT COUNT(*) c FROM institutions WHERE status='active' AND deleted_at IS NULL")->fetch_assoc()['c'];
+$inactive = $conn->query("SELECT COUNT(*) c FROM institutions WHERE status='inactive' AND deleted_at IS NULL")->fetch_assoc()['c'];
+$deleted = $conn->query("SELECT COUNT(*) c FROM institutions WHERE deleted_at IS NOT NULL")->fetch_assoc()['c'];
+
+/* FILTER QUERY */
+if($view == 'active'){
+ $result = $conn->query("SELECT * FROM institutions WHERE status='active' AND deleted_at IS NULL");
+}
+elseif($view == 'inactive'){
+ $result = $conn->query("SELECT * FROM institutions WHERE status='inactive' AND deleted_at IS NULL");
+}
+elseif($view == 'deleted'){
+ $result = $conn->query("SELECT * FROM institutions WHERE deleted_at IS NOT NULL");
+}
+else{
+ $result = $conn->query("SELECT * FROM institutions WHERE deleted_at IS NULL");
+}
+?>
+
+
+
+
+
Founder Dashboard | RS Learning Lab
+
+
+
+
+
+
+
+
+
Founder Dashboard
+
+
+
+
+
+
+
+
+
+
+close(); ?>
\ No newline at end of file
diff --git a/admin_login.php b/admin_login.php
new file mode 100644
index 0000000..9bab386
--- /dev/null
+++ b/admin_login.php
@@ -0,0 +1,187 @@
+
+
+
+
+
+
+
Admin Login | RS Learning Lab
+
+
+
+
+
+
+
+
+
+
+
+
+
RS Learning Lab
+
Institution Admin Login
+
+
+
+
+
+
+
+
+
+ Demo Credentials
+ Email: admin@rslearninglab.in
+ Password: admin123
+
+
+
+
+
+
+
+
diff --git a/api_scan_omr.php b/api_scan_omr.php
new file mode 100644
index 0000000..f16bac6
--- /dev/null
+++ b/api_scan_omr.php
@@ -0,0 +1,71 @@
+ date("Y-m-d H:i:s"),
+ 'roll_no' => $roll_no,
+ 'student_name' => $student_name,
+ 'answers' => $clean_answers
+];
+
+file_put_contents(
+ __DIR__ . "/omr_log.txt",
+ json_encode($logEntry) . PHP_EOL,
+ FILE_APPEND
+);
+
+// π₯ FINAL CHANGE: RETURN instead of echo
+return $clean_answers;
\ No newline at end of file
diff --git a/assets/css/admin.css b/assets/css/admin.css
deleted file mode 100644
index a0708a7..0000000
--- a/assets/css/admin.css
+++ /dev/null
@@ -1,13 +0,0 @@
-body {
- background-color: #f8f9fa;
-}
-
-.login-container {
- max-width: 400px;
- margin: 100px auto;
- padding: 30px;
- border: 1px solid #dee2e6;
- border-radius: 5px;
- background-color: #fff;
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
-}
diff --git a/assets/css/custom.css b/assets/css/custom.css
deleted file mode 100644
index 9eeda0a..0000000
--- a/assets/css/custom.css
+++ /dev/null
@@ -1,74 +0,0 @@
-:root {
- --primary-color: #20C997;
- --secondary-color: #FD7E14;
- --dark-color: #212529;
- --light-color: #F8F9FA;
-}
-
-body {
- font-family: 'Poppins', sans-serif;
- color: var(--dark-color);
-}
-
-.btn-primary, .btn-primary:hover, .btn-primary:active, .btn-primary:visited {
- background: var(--primary-color) !important;
- border-color: var(--primary-color) !important;
- transition: all 0.3s ease;
-}
-
-.btn-primary:hover {
- transform: translateY(-2px);
- box-shadow: 0 4px 12px rgba(32, 201, 151, 0.2);
-}
-
-.card {
- border: none;
- border-radius: 0.5rem;
- box-shadow: 0 4px 25px rgba(0, 0, 0, 0.1);
- transition: all 0.3s ease;
-}
-
-.card:hover {
- transform: translateY(-5px);
- box-shadow: 0 8px 30px rgba(0, 0, 0, 0.15);
-}
-
-.card-img-container {
- position: relative;
-}
-
-.card-img-overlay {
- position: absolute;
- bottom: 0;
- left: 0;
- right: 0;
- background: linear-gradient(to top, rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0));
- padding: 1.5rem;
-}
-
-.card-img-overlay .card-title a {
- color: white;
- text-decoration: none;
-}
-
-.card-img-overlay .badge {
- position: absolute;
- top: 1rem;
- right: 1rem;
-}
-
-.navbar-brand {
- letter-spacing: -0.5px;
-}
-
-.logo-img {
- vertical-align: middle;
-}
-
-h1, h2, h3, h4, h5, h6 {
- font-weight: 700;
-}
-
-.hero-section {
- background: linear-gradient(45deg, var(--primary-color), #5be3c2);
-}
\ No newline at end of file
diff --git a/assets/js/challenges.js b/assets/js/challenges.js
deleted file mode 100644
index 30c06f1..0000000
--- a/assets/js/challenges.js
+++ /dev/null
@@ -1,56 +0,0 @@
-document.addEventListener('DOMContentLoaded', function() {
- const difficultyFilter = document.getElementById('difficulty-filter');
- const learningStyleFilter = document.getElementById('learning-style-filter');
- const sortBy = document.getElementById('sort-by');
- const challengeList = document.querySelector('.challenge-list');
-
- if (difficultyFilter) {
- function fetchChallenges() {
- const difficulty = difficultyFilter.value;
- const learningStyle = learningStyleFilter.value;
- const sort = sortBy.value;
-
- const formData = new FormData();
- formData.append('difficulty', difficulty);
- formData.append('learning_style', learningStyle);
- formData.append('sort_by', sort);
-
- fetch('api/filter_challenges.php', {
- method: 'POST',
- body: formData
- })
- .then(response => response.text())
- .then(data => {
- challengeList.innerHTML = data;
- });
- }
-
- difficultyFilter.addEventListener('change', fetchChallenges);
- learningStyleFilter.addEventListener('change', fetchChallenges);
- sortBy.addEventListener('change', fetchChallenges);
- }
-
- const runCodeBtn = document.getElementById('run-code');
- if (runCodeBtn) {
- runCodeBtn.addEventListener('click', function() {
- const solution = document.getElementById('solution').value;
- const language = document.getElementById('language').value;
- const challengeId = document.querySelector('input[name="challenge_id"]').value;
-
- const formData = new FormData();
- formData.append('solution', solution);
- formData.append('language', language);
- formData.append('challenge_id', challengeId);
-
- fetch('api/run_code.php', {
- method: 'POST',
- body: formData
- })
- .then(response => response.text())
- .then(data => {
- const outputDiv = document.getElementById('output');
- outputDiv.innerHTML = data;
- });
- });
- }
-});
diff --git a/assets/pasted-20251129-085704-16fd66ae.png b/assets/pasted-20251129-085704-16fd66ae.png
deleted file mode 100644
index 66c82d7..0000000
Binary files a/assets/pasted-20251129-085704-16fd66ae.png and /dev/null differ
diff --git a/assets/pasted-20251129-090322-2aed21db.png b/assets/pasted-20251129-090322-2aed21db.png
deleted file mode 100644
index d88cce1..0000000
Binary files a/assets/pasted-20251129-090322-2aed21db.png and /dev/null differ
diff --git a/assets/pasted-20251129-092052-b4d88d1d.png b/assets/pasted-20251129-092052-b4d88d1d.png
deleted file mode 100644
index a0f2458..0000000
Binary files a/assets/pasted-20251129-092052-b4d88d1d.png and /dev/null differ
diff --git a/assets/pasted-20251129-095357-cfd84971.png b/assets/pasted-20251129-095357-cfd84971.png
deleted file mode 100644
index baed5f4..0000000
Binary files a/assets/pasted-20251129-095357-cfd84971.png and /dev/null differ
diff --git a/assets/pasted-20251129-143920-29d52aba.png b/assets/pasted-20251129-143920-29d52aba.png
deleted file mode 100644
index ec84f35..0000000
Binary files a/assets/pasted-20251129-143920-29d52aba.png and /dev/null differ
diff --git a/assets/pasted-20251129-153129-1e57bee7.png b/assets/pasted-20251129-153129-1e57bee7.png
deleted file mode 100644
index 89288a4..0000000
Binary files a/assets/pasted-20251129-153129-1e57bee7.png and /dev/null differ
diff --git a/auto_route_engine.php b/auto_route_engine.php
new file mode 100644
index 0000000..dc76354
--- /dev/null
+++ b/auto_route_engine.php
@@ -0,0 +1,72 @@
+prepare("
+ SELECT momentum_state
+ FROM learning_momentum
+ WHERE roll_no = :roll
+ LIMIT 1
+");
+$stmt->execute([':roll' => $roll_no]);
+$data = $stmt->fetch();
+
+$momentum_state = $data['momentum_state'] ?? "Building";
+
+/* ===============================
+ ROUTING RULE ENGINE
+================================ */
+switch ($momentum_state) {
+
+ case "Applying":
+ $next_track = "final_track.php";
+ $reason = "You are ready to apply what youβve learned calmly.";
+ break;
+
+ case "Stabilizing":
+ $next_track = "reinforcement_track.php";
+ $reason = "Letβs stabilize your understanding before final application.";
+ break;
+
+ case "Reset":
+ case "Building":
+ default:
+ $next_track = "practice_track.php";
+ $reason = "Practice builds confidence. Letβs continue calmly.";
+ break;
+}
+
+/* ===============================
+ AUTO REDIRECT
+================================ */
+header("Location: $next_track?roll=" . urlencode($roll_no) .
+ "&name=" . urlencode($name) .
+ "&concept=" . urlencode($concept_id));
+exit;
diff --git a/bulk_download.php b/bulk_download.php
new file mode 100644
index 0000000..c80a4bd
--- /dev/null
+++ b/bulk_download.php
@@ -0,0 +1,70 @@
+
+
+
+
+
+
Download Reports
+
+
+
+
+
+
+
+
+
Learning Style Reports
+
+$name";
+
+}
+
+?>
+
+
+
+
+
\ No newline at end of file
diff --git a/certificate.html b/certificate.html
new file mode 100644
index 0000000..2e29f34
--- /dev/null
+++ b/certificate.html
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
CERTIFICATE OF PARTICIPATION
+
+
+
This is to certify that
+
+
STUDENT NAME
+
+
+ has successfully completed the coding challenge track
+ Python Foundations
+ conducted by RS Learning Lab
+
+
+
+
+
+
diff --git a/certificate_verify.php b/certificate_verify.php
new file mode 100644
index 0000000..83d6507
--- /dev/null
+++ b/certificate_verify.php
@@ -0,0 +1,137 @@
+prepare("
+ SELECT
+ qa.roll_no,
+ SUM(qa.is_correct) AS correct_count,
+ COUNT(*) AS total_count
+ FROM question_attempts qa
+ WHERE qa.roll_no = ?
+ AND qa.track = 'final'
+ ");
+ $stmt->execute([$roll_no]);
+ $row = $stmt->fetch(PDO::FETCH_ASSOC);
+
+ if ($row && $row['total_count'] > 0) {
+ $percent = round(($row['correct_count'] / $row['total_count']) * 100);
+
+ if ($percent >= 60) {
+ $verified = true;
+ $data = [
+ 'roll_no' => $roll_no,
+ 'concept' => $concept_id,
+ 'score' => $percent,
+ 'date' => date("d M Y")
+ ];
+ } else {
+ $error = "Certificate not eligible (final not passed).";
+ }
+ } else {
+ $error = "No final assessment found.";
+ }
+ }
+}
+?>
+
+
+
+
+
Certificate Verification
+
+
+
+
+
+
+
Certificate Verification
+
+
+
+
+
+ β
Certificate Verified
+ Roll No: =htmlspecialchars($data['roll_no'])?>
+ Concept: =htmlspecialchars($data['concept'])?>
+ Score: =$data['score']?>%
+ Status: VALID
+ Date: =$data['date']?>
+
+
+
+
+
+ β =$error?>
+
+
+
+
+
+
diff --git a/certificates/assets/certificate_bg.png b/certificates/assets/certificate_bg.png
new file mode 100644
index 0000000..f09cc96
Binary files /dev/null and b/certificates/assets/certificate_bg.png differ
diff --git a/certificates/assets/logo.png b/certificates/assets/logo.png
new file mode 100644
index 0000000..1945bf1
Binary files /dev/null and b/certificates/assets/logo.png differ
diff --git a/certificates/assets/signature.png b/certificates/assets/signature.png
new file mode 100644
index 0000000..6b1a08d
Binary files /dev/null and b/certificates/assets/signature.png differ
diff --git a/certificates/certificate_template.php b/certificates/certificate_template.php
new file mode 100644
index 0000000..72c7cef
--- /dev/null
+++ b/certificates/certificate_template.php
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is to certify that
+
+
= htmlspecialchars($student_name) ?>
+
+
has successfully participated in the
+
+
= htmlspecialchars($track_name) ?>
+
+
conducted by RS Learning Lab
+
+
+
+
+
+
+
diff --git a/certificates/certificate_tmp.html b/certificates/certificate_tmp.html
new file mode 100644
index 0000000..9426244
--- /dev/null
+++ b/certificates/certificate_tmp.html
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
Certificate ID: {{CERT_ID}}
+
Issue Date: {{ISSUE_DATE}}
+
+
{{NAME}}
+
+
+
+
\ No newline at end of file
diff --git a/certificates/generate_certificate_pdf.php b/certificates/generate_certificate_pdf.php
new file mode 100644
index 0000000..88e2a29
--- /dev/null
+++ b/certificates/generate_certificate_pdf.php
@@ -0,0 +1,25 @@
+set('isRemoteEnabled', true);
+$options->set('chroot', realpath(__DIR__));
+
+$dompdf = new Dompdf($options);
+$dompdf->loadHtml($html);
+$dompdf->setPaper('A4', 'portrait');
+$dompdf->render();
+$dompdf->stream("certificate_$name.pdf", ["Attachment" => false]);
\ No newline at end of file
diff --git a/certificates/preview_certificate.php b/certificates/preview_certificate.php
new file mode 100644
index 0000000..e940dca
--- /dev/null
+++ b/certificates/preview_certificate.php
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
Certificate Preview
+
+ This is how the official certificate will appear for students.
+
+
+
+
+
+
+
Certificate of Participation
+
+
This is to certify that
+
+
Gokul
+
+
+ has actively participated in the RS Learning Lab Coding Challenge Program
+ and demonstrated consistent learning effort.
+
+
+
Demonstrated Skills
+
Logical Thinking Β· Problem Solving Β· Coding Fundamentals
+
+
+
+
Gokula Krishnan
+
+ Founder β RS Learning Lab
+
+
+
+
+
+
+
+
+
+
+
diff --git a/certificates/verify.php b/certificates/verify.php
new file mode 100644
index 0000000..f819107
--- /dev/null
+++ b/certificates/verify.php
@@ -0,0 +1,59 @@
+
+
+
+
Certificate Verification | RS Learning Lab
+
+
+
+
+
+
Certificate Verification
+
Enter Certificate ID
+
+
+
+
+
+
diff --git a/certificates/verify_action.php b/certificates/verify_action.php
new file mode 100644
index 0000000..ab4beca
--- /dev/null
+++ b/certificates/verify_action.php
@@ -0,0 +1,31 @@
+prepare("SELECT * FROM certificates WHERE certificate_id = ?");
+$stmt->execute([$certificate_id]);
+
+$cert = $stmt->fetch(PDO::FETCH_ASSOC);
+
+if (!$cert) {
+ echo "Certificate Not Found";
+ exit;
+}
+?>
+
+
β
Certificate Verified
+
Student: = htmlspecialchars($cert['student_name']) ?>
+
Course: = htmlspecialchars($cert['course']) ?>
+
Date: = htmlspecialchars($cert['issued_on']) ?>
diff --git a/challenge.php b/challenge.php
deleted file mode 100644
index 19cd90d..0000000
--- a/challenge.php
+++ /dev/null
@@ -1,164 +0,0 @@
-prepare('SELECT * FROM challenges WHERE id = ? AND deleted_at IS NULL');
-$stmt->execute([$challenge_id]);
-$challenge = $stmt->fetch();
-
-if (!$challenge) {
- header('Location: challenges.php');
- exit();
-}
-
-$user_id = $_SESSION['user_id'] ?? null;
-$submissions = [];
-if ($user_id) {
- $stmt = $pdo->prepare('SELECT * FROM challenge_submissions WHERE user_id = ? AND challenge_id = ? ORDER BY submitted_at DESC');
- $stmt->execute([$user_id, $challenge_id]);
- $submissions = $stmt->fetchAll();
-}
-
-?>
-
-
-
-
-
-
-
Submit Your Solution
-
-
-
-
-
-
-
-
Difficulty: | Learning Style:
-
-
-
- Description
-
-
- My Submissions
-
-
-
-
-
-
Description
-
-
-
Sample Cases
-
Input:\n" . htmlspecialchars($sample['input']) . "\n";
- echo "Output: \n" . htmlspecialchars($sample['output']) . "\n\n";
- }
- ?>
-
-
-
-
-
-
My Submissions
-
-
-
- Attempt
- Language
- Status
- Date
-
-
-
- 0) : ?>
-
-
-
-
-
-
-
-
-
-
- You have not made any submissions for this challenge yet.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/challenges.php b/challenges.php
index d94630d..43b7a21 100644
--- a/challenges.php
+++ b/challenges.php
@@ -1,114 +1,103 @@
-
-
Coding Challenges
-
Test your skills with our coding challenges.
+
+
+
+
Coding Challenges | RS Learning Lab
+
+
+
-
-
-
-
+
π Coding Challenges
+
Base to advanced learning path.
+
+
+
+
+
Select Programming Language
+
+
+ -- Choose Language --
+ Python
+ C
+ Java
+
+ Start Practice Track
+
+
+
+
+
+
+
Track 1: Practice Track
+
Focus: Syntax, basics, confidence building.
+
+
+
Not Started
+
Start Practice
+
+
Completed
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Difficulty
-
- All
- Easy
- Medium
- Advanced
-
-
-
-
-
- Learning Style
-
- All
- Kinesthetic
- Visual
- Auditory
- Reading/Writing
-
-
-
-
-
- Sort By
-
- Newest
- Oldest
- Popularity
-
-
-
-
-
-
- query('SELECT * FROM challenges WHERE deleted_at IS NULL ORDER BY created_at DESC');
- $challenges = $stmt->fetchAll();
-
- if (count($challenges) > 0) {
- foreach ($challenges as $challenge) {
- $image_data = pexels_get('https://api.pexels.com/v1/search?query=' . urlencode($challenge['title']) . '&per_page=1');
- if ($image_data && isset($image_data['photos'][0])) {
- $image_url = $image_data['photos'][0]['src']['large'];
- } else {
- $image_url = 'https://via.placeholder.com/600x400'; // Default placeholder
- }
-
- echo '
';
- echo '
';
- echo '
';
- echo '
';
- echo '
';
- echo '
';
- echo '
' . htmlspecialchars($challenge['difficulty']) . ' ';
- echo '
';
- echo '
';
- echo '
';
- echo '
' . htmlspecialchars(substr($challenge['description'], 0, 100)) . '...
';
- echo '
';
- echo '' . htmlspecialchars($challenge['learning_style']) . ' ';
- echo '
';
- echo '
';
- echo '
';
- echo '
';
- }
- } else {
- echo '
No challenges available yet. Please check back later.
';
- }
- ?>
-
-
+
+
+
Track 2: Reinforcement Track
+
Focus: Logic strengthening.
+
+
+
Locked
+
+
Start Reinforcement
+
+
Completed
+ π
Learning Badge Earned
+
+
+
+
+
+
Track 3: Final Track
+
Focus: End-to-end problem solving.
+
+
+
Locked
+
+
Start Final Track
+
+
Completed
+ π Track Completion Certificate Unlocked
+
+
+
+
+
+
+
β Back to Dashboard
+
+
+
diff --git a/change_password.php b/change_password.php
new file mode 100644
index 0000000..6d5b5ba
--- /dev/null
+++ b/change_password.php
@@ -0,0 +1,63 @@
+prepare("
+ UPDATE institutions
+ SET password = ?
+ WHERE id = ?
+ ");
+ $stmt->execute([$hash, $_SESSION['institution_id']]);
+
+ $success = "Password updated successfully";
+ }
+}
+?>
+
+
+
+
+
Change Password | RS Learning Lab
+
+
+
+
Change Password
+
+
+
+
+
+
+
+
Go to Dashboard
+
+
+
+
+
+ Update Password
+
+
+
+
diff --git a/check_certificate_unlock.php b/check_certificate_unlock.php
new file mode 100644
index 0000000..5541f9a
--- /dev/null
+++ b/check_certificate_unlock.php
@@ -0,0 +1,40 @@
+prepare("
+ SELECT COUNT(DISTINCT challenge_id) AS completed
+ FROM challenge_submissions
+ WHERE student_id = ? AND is_correct = 1
+");
+$stmt->bind_param("i", $student_id);
+$stmt->execute();
+$result = $stmt->get_result()->fetch_assoc();
+
+$completed = $result['completed'];
+
+// Rule: 5 challenges
+if ($completed >= 5) {
+
+ // Check already issued?
+ $check = $conn->prepare("
+ SELECT id FROM certificates
+ WHERE student_id = ? AND certificate_type = 'Participation'
+ ");
+ $check->bind_param("i", $student_id);
+ $check->execute();
+ $checkResult = $check->get_result();
+
+ if ($checkResult->num_rows == 0) {
+ // Issue certificate
+ $insert = $conn->prepare("
+ INSERT INTO certificates (student_id, certificate_type, track_name)
+ VALUES (?, 'Participation', ?)
+ ");
+ $insert->bind_param("is", $student_id, $track);
+ $insert->execute();
+ }
+}
diff --git a/check_professional_certificate.php b/check_professional_certificate.php
new file mode 100644
index 0000000..a3a2d78
--- /dev/null
+++ b/check_professional_certificate.php
@@ -0,0 +1,24 @@
+";
+print_r($_SESSION);
diff --git a/choose_assessment_mode.php b/choose_assessment_mode.php
new file mode 100644
index 0000000..7b1c7cb
--- /dev/null
+++ b/choose_assessment_mode.php
@@ -0,0 +1,103 @@
+
+
+
+
+
+
Choose Assessment Mode | RS Learning Lab
+
+
+
+
+
+
+
Choose Assessment Mode
+
+ Select how you want to conduct the learning style assessment.
+
+
+
+
+
β Back to Dashboard
+
+
+
+
diff --git a/class_report.php b/class_report.php
new file mode 100644
index 0000000..f40fc9c
--- /dev/null
+++ b/class_report.php
@@ -0,0 +1,116 @@
+prepare("
+SELECT student_roll, student_name, primary_style, secondary_style, pdf_path
+FROM learning_style_results
+ORDER BY student_roll ASC
+");
+
+$stmt->execute();
+$students = $stmt->fetchAll(PDO::FETCH_ASSOC);
+
+?>
+
+
+
+
+
+
Class Learning Style Report
+
+
+Teacher: |
+Class:
+
+
+
+
+
+
+
+
+Roll No
+Student Name
+Primary Style
+Secondary Style
+Report
+
+
+
+
+
+
+ 0): ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Download PDF
+
+
+
+
+Not Generated
+
+
+
+
+
+
+
+
+
+
+
+
+No assessment data available
+
+
+
+
+
+
+
+
+
+
+
+
+β¬ Download Class Report (PDF)
+
+
+
+
+
+
+β Back to Dashboard
+
+
+
+
+