'Missing user_id']); exit; } $user_id = (int)$_GET['user_id']; $stmt = $db->prepare("SELECT u.username, u.display_name, u.level_id, u.guild_id, u.role, l.name as level_name, t.name as title_name, b.name as badge_name, b.image_url as badge_image, g.name as guild_name, g.tag as guild_tag FROM users u LEFT JOIN levels l ON u.level_id = l.id LEFT JOIN titles t ON u.selected_title_id = t.id LEFT JOIN badges b ON u.selected_badge_id = b.id LEFT JOIN guilds g ON u.guild_id = g.id WHERE u.id = ?"); $stmt->execute([$user_id]); $u = $stmt->fetch(PDO::FETCH_ASSOC); if (!$u) { http_response_code(404); echo json_encode(['error' => 'User not found']); exit; } // Fetch grade $grade_type = ($u['role'] === 'admin') ? 'admin' : 'utilisateur'; $level_num = (int)filter_var($u['level_name'] ?? '1', FILTER_SANITIZE_NUMBER_INT); $g_stmt = $db->prepare("SELECT name, image_url FROM grades WHERE user_type = ? AND (min_level <= ? OR min_level IS NULL) AND (max_level >= ? OR max_level IS NULL) LIMIT 1"); $g_stmt->execute([$grade_type, $level_num, $level_num]); $grade_data = $g_stmt->fetch(PDO::FETCH_ASSOC); $grade_name = $grade_data['name'] ?? "Recrue"; $grade_image = $grade_data['image_url'] ?? "assets/images/placeholder_grade.png"; ob_start(); ?>