prepare($sql); $stmt->execute(); return $stmt->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e) { return []; } } function getAcademicYears() { global $DBcon; try { $sql = "SELECT academic_year FROM calender ORDER BY academic_year DESC"; $stmt = $DBcon->prepare($sql); $stmt->execute(); return $stmt->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e) { return []; } } $classes = getClasses(); $academic_years = getAcademicYears(); $message = ''; $message_type = ''; // Handle form submission if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (!validate_csrf_token($_POST['csrf_token'])) { $message = 'Security token validation failed.'; $message_type = 'error'; } else { $fullname = sanitize_input($_POST['fullname']); $regno = sanitize_input($_POST['regno']); $class_id = sanitize_input($_POST['class_id']); $admin_year = sanitize_input($_POST['admin_year']); if (empty($fullname) || empty($regno) || empty($class_id)) { $message = 'Please fill in all required fields.'; $message_type = 'error'; } else { try { // Handle image upload $image_path = ''; if (isset($_FILES['image_upload']) && $_FILES['image_upload']['error'] === UPLOAD_ERR_OK) { $upload_dir = '../uploads/students/'; if (!file_exists($upload_dir)) mkdir($upload_dir, 0755, true); $allowed_types = ['image/jpeg', 'image/jpg', 'image/png', 'image/gif']; $max_size = 2 * 1024 * 1024; if (in_array($_FILES['image_upload']['type'], $allowed_types) && $_FILES['image_upload']['size'] <= $max_size) { $extension = pathinfo($_FILES['image_upload']['name'], PATHINFO_EXTENSION); $filename = 'student_' . uniqid() . '.' . $extension; $filepath = $upload_dir . $filename; if (move_uploaded_file($_FILES['image_upload']['tmp_name'], $filepath)) { $image_path = 'uploads/students/' . $filename; } } } // Insert student $sql = "INSERT INTO students_info (fullname, regno, class_id, admin_year, image) VALUES (:fullname, :regno, :class_id, :admin_year, :image)"; $stmt = $DBcon->prepare($sql); $result = $stmt->execute([ ':fullname' => $fullname, ':regno' => $regno, ':class_id' => $class_id, ':admin_year' => $admin_year, ':image' => $image_path ]); if ($result) { header('Location: students_crud.php?message=Student created successfully&type=success'); exit(); } else { $message = 'Failed to create student.'; $message_type = 'error'; } } catch (PDOException $e) { $message = 'Error creating student: ' . $e->getMessage(); $message_type = 'error'; } } } } $csrf_token = generate_csrf_token(); ?>