prepare("DELETE FROM users WHERE id = ?"); $stmt->execute([$delete_id]); header("Location: users.php?deleted=true"); exit; } catch (PDOException $e) { $error_message = "Error deleting user: " . $e->getMessage(); } } // Handle Add User Form Submission if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['username'])) { $username = trim($_POST['username']); $password = $_POST['password']; $role = $_POST['role']; if (!empty($username) && !empty($password) && !empty($role)) { $hashed_password = password_hash($password, PASSWORD_DEFAULT); try { $pdo = db(); $stmt = $pdo->prepare("INSERT INTO users (username, password, role) VALUES (?, ?, ?)"); $stmt->execute([$username, $hashed_password, $role]); // Redirect to avoid form resubmission header("Location: users.php"); exit; } catch (PDOException $e) { // Check for duplicate entry if ($e->errorInfo[1] == 1062) { $error_message = "Error: This username is already taken."; } else { $error_message = "Database error: " . $e->getMessage(); } } } else { $error_message = "All fields are required."; } } // Fetch all users try { $pdo = db(); $stmt = $pdo->query('SELECT id, username, role, created_at FROM users ORDER BY created_at DESC'); $users = $stmt->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e) { // For now, we'll just die on error. In a real app, handle this gracefully. die("Error fetching users: " . $e->getMessage()); } $page_title = "User Management"; include 'partials/header.php'; ?>