query('SELECT * FROM settings'); $settings = $settings_stmt->fetchAll(PDO::FETCH_KEY_PAIR); $coach_mode = $settings['coach_mode'] ?? 'multi'; $single_coach_id = $settings['single_coach_id'] ?? null; if ($coach_mode === 'single' && !empty($single_coach_id)) { header('Location: profile.php?id=' . $single_coach_id); exit; } // Pagination $limit = 6; // Number of coaches per page $page = isset($_GET['page']) && is_numeric($_GET['page']) ? (int)$_GET['page'] : 1; $offset = ($page - 1) * $limit; try { // Get total number of coaches for pagination $total_coaches_stmt = db()->query('SELECT count(*) FROM coaches'); $total_coaches = $total_coaches_stmt->fetchColumn(); $total_pages = ceil($total_coaches / $limit); // Fetch coaches for the current page $stmt = db()->prepare('SELECT id, name, specialties, bio, photo_url FROM coaches ORDER BY name ASC LIMIT :limit OFFSET :offset'); $stmt->bindValue(':limit', $limit, PDO::PARAM_INT); $stmt->bindValue(':offset', $offset, PDO::PARAM_INT); $stmt->execute(); $coaches = $stmt->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e) { // It's a good practice to log the error and show a user-friendly message error_log($e->getMessage()); $coaches = []; $total_pages = 0; // For a real application, you might want to redirect to an error page } ?> Browse Coaches

Meet Our Coaches

prepare('SELECT * FROM service_packages WHERE coach_id = ?'); $package_stmt->execute([$coach['id']]); $packages = $package_stmt->fetchAll(PDO::FETCH_ASSOC); ?>
<?= htmlspecialchars($coach['name']) ?>

Coaching Packages

prepare('SELECT SUM(quantity) as total_sessions FROM package_service_items WHERE package_id = ? AND service_type IN ("one_on_one", "group_session")'); $items_stmt->execute([$package['id']]); $items_result = $items_stmt->fetch(); $total_sessions = $items_result['total_sessions'] ?? 0; ?>

$ $ / for installments 0): ?> for sessions
Purchase Purchase as Gift
Type: | Client Limit: | Starts: | Ends:

No coaches found.