getConnection(); // Poi il resto del codice... $user_id = (int)($_POST['user_id'] ?? 0); $school_id = (int)($_POST['school_id'] ?? 0); if ($user_id <= 0 || $school_id <= 0) { echo '
Dati non validi.
'; exit; } $stmt = $pdo->prepare(" SELECT cs.id AS session_id, cs.session_date, cs.start_time, cs.end_time, c.name AS class_name, ct.level, sb.status, sb.booked_at, o.id AS order_id, o.order_number, o.total_entries, o.available_entries FROM session_bookings sb INNER JOIN class_sessions cs ON sb.session_id = cs.id AND cs.school_id = ? INNER JOIN classes c ON cs.class_id = c.id AND c.school_id = ? INNER JOIN class_types ct ON cs.class_type_id = ct.id AND ct.school_id = ? LEFT JOIN orders o ON sb.order_id = o.id AND o.school_id = ? WHERE sb.user_id = ? ORDER BY cs.session_date DESC, cs.start_time DESC LIMIT 100 "); $stmt->execute([ $school_id, $school_id, $school_id, $school_id, $user_id ]); $bookings = $stmt->fetchAll(PDO::FETCH_ASSOC); if (empty($bookings)) { echo '
Nessuna prenotazione registrata per questo utente.
'; exit; } ?>
'bg-success', 'missed' => 'bg-danger', 'booked' => (strtotime($b['session_date']) >= time()) ? 'bg-primary' : 'bg-secondary', 'cancelled' => 'bg-dark', 'rescheduled' => 'bg-info', default => 'bg-secondary' }; $statoText = match ($b['status']) { 'attended' => 'Frequentata', 'missed' => 'Persa', 'booked' => (strtotime($b['session_date']) >= time()) ? 'Prenotata' : 'Scaduta', 'cancelled' => 'Cancellata', 'rescheduled' => 'Riprog.', default => $b['status'] }; ?>
Data Orario Classe Livello Stato Ordine Data prenotazione
#
/