= '" . escape($conn, $date_from) . "'"; } if (!empty($date_to)) { $sql .= " AND DATE(s.created_at) <= '" . escape($conn, $date_to) . "'"; } $sql .= " ORDER BY s.created_at DESC"; $result = query($conn, $sql); $students = []; while ($row = mysqli_fetch_assoc($result)) { $students[] = $row; } // Generate PDF if ($report_type === 'pdf') { require_once '../vendor/autoload.php'; // If using TCPDF or Dompdf // For now, we'll create a simple HTML report that can be printed // In production, you'd use a PDF library like TCPDF or Dompdf $_SESSION['report_data'] = [ 'students' => $students, 'filters' => [ 'status' => $status_filter, 'year_level' => $year_level_filter, 'course' => $course_filter, 'date_from' => $date_from, 'date_to' => $date_to ] ]; header('Location: print_report.php?type=pdf'); exit(); } // Generate Excel elseif ($report_type === 'excel') { require_once '../includes/PHPExcel.php'; // Or use PhpSpreadsheet // Create Excel file $filename = "students_report_" . date('Y-m-d_H-i-s') . ".xlsx"; header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment; filename="' . $filename . '"'); // For now, create CSV as fallback outputCSV($students); exit(); } // Print view elseif ($report_type === 'print') { $_SESSION['report_data'] = [ 'students' => $students, 'filters' => [ 'status' => $status_filter, 'year_level' => $year_level_filter, 'course' => $course_filter, 'date_from' => $date_from, 'date_to' => $date_to ] ]; header('Location: print_report.php'); exit(); } } // Get courses for filter dropdown $courses = []; $result = query($conn, "SELECT id, code, name FROM courses WHERE status = 1 ORDER BY code"); while ($row = mysqli_fetch_assoc($result)) { $courses[] = $row; } // Get departments $departments = []; $result = query($conn, "SELECT id, code, name FROM departments WHERE status = 1 ORDER BY code"); while ($row = mysqli_fetch_assoc($result)) { $departments[] = $row; } function outputCSV($data) { $output = fopen('php://output', 'w'); // Header row fputcsv($output, [ 'Student ID', 'Full Name', 'Gender', 'Year Level', 'Course', 'Department', 'Email', 'Contact Number', 'Status', 'Date Created' ]); // Data rows foreach ($data as $student) { fputcsv($output, [ $student['student_id'], $student['full_name'], $student['gender'], 'Year ' . $student['year_level'], $student['course_code'] . ' - ' . $student['course_name'], $student['department_name'], $student['email'], $student['contact_number'], $student['status'] == 1 ? 'Active' : 'Inactive', date('Y-m-d', strtotime($student['created_at'])) ]); } fclose($output); } include '../includes/header.php'; ?>

Student Reports

Generate and export student reports in various formats.

Back to Students
Report Filters
Quick Print

Generate a printable student list

Export Excel

Download as Excel spreadsheet

PDF Report

Generate detailed PDF report

$(document).ready(function() { // Set today as default date for "Date To" const today = new Date().toISOString().split("T")[0]; $("input[name=\'date_to\']").val(today); // Set 30 days ago as default for "Date From" const thirtyDaysAgo = new Date(); thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30); $("input[name=\'date_from\']").val(thirtyDaysAgo.toISOString().split("T")[0]); // Form validation $("form").submit(function() { const dateFrom = $("input[name=\'date_from\']").val(); const dateTo = $("input[name=\'date_to\']").val(); if (dateFrom && dateTo && new Date(dateFrom) > new Date(dateTo)) { showNotification("Date From cannot be after Date To", "danger"); return false; } showLoader("Generating report..."); return true; }); }); // Quick export functions function exportActiveStudents() { showConfirm("Export all active students to Excel?", function(confirmed) { if (confirmed) { const form = document.createElement("form"); form.method = "POST"; form.action = ""; const typeInput = document.createElement("input"); typeInput.type = "hidden"; typeInput.name = "report_type"; typeInput.value = "excel"; form.appendChild(typeInput); const statusInput = document.createElement("input"); statusInput.type = "hidden"; statusInput.name = "status_filter"; statusInput.value = "1"; form.appendChild(statusInput); document.body.appendChild(form); form.submit(); } }); } function printStudentCards() { showConfirm("Generate printable student ID cards?", function(confirmed) { if (confirmed) { window.open("student_cards.php", "_blank"); } }); } '; include '../includes/footer.php'; ?>