The School Management Platform provides comprehensive user management capabilities for students and teachers, featuring role-based access control, secure authentication, and automated session management.
Student Management
Create, view, search, and delete student accounts
Teacher Management
Manage teacher accounts and assignments
Authentication
Secure login with password hashing and session control
// Student.php - getAll()public function getAll(){ $sql = "SELECT users.id, users.name, users.email FROM users JOIN students ON users.id = students.id ORDER BY users.name"; return $this->db->query($sql)->fetchAll(PDO::FETCH_ASSOC);}
// Student.php - search()public function search($keyword){ $stmt = $this->db->prepare(" SELECT students.*, users.name, users.email FROM students JOIN users ON students.id = users.id WHERE users.name LIKE ? OR users.email LIKE ? "); $stmt->execute(["%$keyword%", "%$keyword%"]); return $stmt->fetchAll(PDO::FETCH_ASSOC);}
Cascade Deletion: When a student is deleted from the users table,
related records in students, enrollments, and grades tables are
automatically removed via database foreign key constraints.
The User model provides common authentication and lookup methods:
// User.phpclass User{ // Find user by email (for login) public function findByEmail($email) { $stmt = $this->db->prepare("SELECT * FROM users WHERE email = ?"); $stmt->execute([$email]); return $stmt->fetch(PDO::FETCH_ASSOC); } // Find user by ID public function findById($id) { $stmt = $this->db->prepare( "SELECT id, name, email FROM users WHERE id = ?" ); $stmt->execute([$id]); return $stmt->fetch(PDO::FETCH_ASSOC); } // Get all students (for bulletin generation) public function getAllStudents() { $stmt = $this->db->query( "SELECT id, name, email FROM users WHERE role = 'student'" ); return $stmt->fetchAll(PDO::FETCH_ASSOC); }}
The user management system uses the following tables:
-- Users table (stores all users)CREATE TABLE users ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100) NOT NULL, email VARCHAR(100) UNIQUE NOT NULL, password VARCHAR(255) NOT NULL, role ENUM('admin', 'teacher', 'student') NOT NULL);-- Students table (extends users)CREATE TABLE students ( id INT PRIMARY KEY, FOREIGN KEY (id) REFERENCES users(id) ON DELETE CASCADE);-- Teachers table (extends users)CREATE TABLE teachers ( id INT PRIMARY KEY, FOREIGN KEY (id) REFERENCES users(id) ON DELETE CASCADE);