Benvenuta/o
Di seguito puoi visualizzare i tuoi ordini
| N. Ordine | Data Ordine | Classe | Giorno/Ora | N. Ticket | Prima Lezione | Scadenza | Riprogr. Massime | Riprogrammate | Stato |
|---|---|---|---|---|---|---|---|---|---|
getConnection(); $iduserlogin = (int) $iduserlogin; /* ------------------------------------------------------------------------- * Helper per output sicuro in HTML (anti-XSS) * ---------------------------------------------------------------------- */ function e($value): string { return htmlspecialchars((string) $value, ENT_QUOTES, 'UTF-8'); } /* ------------------------------------------------------------------------- * 1) Ordini dell'utente * ---------------------------------------------------------------------- */ $sqlOrders = "SELECT o.idorderbook, o.order_id, o.idservice, o.order_date_created, o.quantityclass, o.first_lesson_date, o.expireon, o.maxreschedule, o.reprogrammed, s.servicename, s.day, s.time FROM orderbook o LEFT JOIN service s ON o.idservice = s.idservice WHERE o.iduser = :iduser ORDER BY o.order_date_created DESC"; $stmtOrders = $pdo->prepare($sqlOrders); $stmtOrders->execute([':iduser' => $iduserlogin]); $orders = $stmtOrders->fetchAll(); /* ------------------------------------------------------------------------- * 2) Tutte le lezioni degli ordini in UNA sola query (niente N+1) * Poi le raggruppiamo per idorder in PHP. * ---------------------------------------------------------------------- */ $lessonsByOrder = []; $orderIds = array_filter(array_map(fn($o) => (int) $o['idorderbook'], $orders)); if (!empty($orderIds)) { $placeholders = implode(',', array_fill(0, count($orderIds), '?')); $sqlLessons = "SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, bc.is_reprogrammed, bc.idorder, s.servicename FROM bookingclass bc LEFT JOIN service s ON bc.idservice = s.idservice WHERE bc.idorder IN ($placeholders)"; $stmtLessons = $pdo->prepare($sqlLessons); $stmtLessons->execute(array_values($orderIds)); foreach ($stmtLessons->fetchAll() as $lesson) { // Normalizziamo la data in formato ISO 8601 (come faceva date('c', ...)) if (!empty($lesson['bookingstart'])) { $lesson['bookingstart'] = date('c', strtotime($lesson['bookingstart'])); } $lessonsByOrder[(int) $lesson['idorder']][] = $lesson; } } // Attacchiamo a ogni ordine il suo array di lezioni foreach ($orders as &$order) { $oid = (int) $order['idorderbook']; $order['lessons'] = $lessonsByOrder[$oid] ?? []; } unset($order); ?>
Di seguito puoi visualizzare i tuoi ordini
| N. Ordine | Data Ordine | Classe | Giorno/Ora | N. Ticket | Prima Lezione | Scadenza | Riprogr. Massime | Riprogrammate | Stato |
|---|---|---|---|---|---|---|---|---|---|