<?php
// Include database configuration
require_once 'db_config.php';
// Enable error reporting for debugging
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Check if this script is being accessed directly
$is_direct_access = (basename($_SERVER['PHP_SELF']) == basename(__FILE__));
// Start HTML output if accessed directly
if ($is_direct_access) {
echo "<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='UTF-8'>
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
<title>Create Attendance Table</title>
<link href='https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body class='bg-light'>
<div class='container py-5'>
<div class='card shadow'>
<div class='card-header bg-primary text-white'>
<h3>Create Attendance Table</h3>
</div>
<div class='card-body'>";
}
// Create the attendance table if it doesn't exist
$create_attendance_table_sql = "
CREATE TABLE IF NOT EXISTS `attendance` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`enrollment_id` int(11) NOT NULL,
`course_id` int(11) NOT NULL,
`student_id` int(11) NOT NULL,
`date` date NOT NULL,
`status` enum('present','absent','late','excused') NOT NULL DEFAULT 'present',
`marked_by` int(11) DEFAULT NULL,
`notes` text DEFAULT NULL,
`created_at` timestamp NOT NULL DEFAULT current_timestamp(),
`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
PRIMARY KEY (`id`),
KEY `enrollment_id` (`enrollment_id`),
KEY `course_id` (`course_id`),
KEY `student_id` (`student_id`),
KEY `marked_by` (`marked_by`),
KEY `date` (`date`),
CONSTRAINT `attendance_course_id_fk` FOREIGN KEY (`course_id`) REFERENCES `courses` (`id`) ON DELETE CASCADE,
CONSTRAINT `attendance_enrollment_id_fk` FOREIGN KEY (`enrollment_id`) REFERENCES `enrollments` (`id`) ON DELETE CASCADE,
CONSTRAINT `attendance_student_id_fk` FOREIGN KEY (`student_id`) REFERENCES `users` (`id`) ON DELETE CASCADE,
CONSTRAINT `attendance_marked_by_fk` FOREIGN KEY (`marked_by`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
";
// Execute query
$result = $conn->query($create_attendance_table_sql);
// Output result
if ($is_direct_access) {
if ($result) {
echo "<div class='alert alert-success'><i class='fas fa-check-circle me-2'></i> Attendance table created successfully!</div>";
} else {
echo "<div class='alert alert-danger'><i class='fas fa-exclamation-circle me-2'></i> Error creating attendance table: " . $conn->error . "</div>";
}
// Add a back button
echo "<div class='mt-4'>
<a href='../index.php' class='btn btn-primary'>Back to Dashboard</a>
</div>";
// Close HTML tags
echo "</div>
</div>
</div>
<script src='https://kit.fontawesome.com/a076d05399.js' crossorigin='anonymous'></script>
</body>
</html>";
}
// Return result for programmatic use
return $result;
?>