prepare('SELECT com, depc FROM etablissements WHERE id = ?'); $e->execute([$uai]); $loc = $e->fetch(); if (!$loc || $loc['com'] === null || $loc['depc'] === null) { json_out([]); } $st = db()->prepare( "SELECT ef.annee, SUM(ef.eleves) AS eleves FROM effectifs ef JOIN etablissements e ON e.id = ef.uai WHERE e.com = ? AND e.depc = ? AND e.stat = 'Public' GROUP BY ef.annee ORDER BY ef.annee" ); $st->execute([$loc['com'], $loc['depc']]); $out = []; foreach ($st as $r) { $out[] = ['annee' => (int) $r['annee'], 'eleves' => (int) $r['eleves']]; } json_out($out); } // Batch : dernier effectif connu pour une liste d'UAI → { uai: eleves }. if (($_GET['action'] ?? '') === 'latest') { $uais = body_json()['uais'] ?? []; if (!is_array($uais) || !$uais) { json_out([]); } $uais = array_slice(array_values(array_unique(array_map('strval', $uais))), 0, 5000); $ph = implode(',', array_fill(0, count($uais), '?')); $sql = "SELECT ef.uai, ef.eleves FROM effectifs ef JOIN (SELECT uai, MAX(annee) AS y FROM effectifs WHERE uai IN ($ph) GROUP BY uai) m ON m.uai = ef.uai AND m.y = ef.annee"; $st = db()->prepare($sql); $st->execute($uais); $out = []; foreach ($st as $r) { $out[$r['uai']] = (int) $r['eleves']; } json_out($out); } $uai = trim((string) ($_GET['uai'] ?? '')); if ($uai === '') { json_error('Paramètre uai requis.'); } $st = db()->prepare('SELECT annee, eleves, classes FROM effectifs WHERE uai = ? ORDER BY annee'); $st->execute([$uai]); $out = []; foreach ($st as $r) { $out[] = [ 'annee' => (int) $r['annee'], 'eleves' => (int) $r['eleves'], 'classes' => (int) $r['classes'], ]; } json_out($out); } catch (Throwable $e) { json_error('Erreur : ' . $e->getMessage(), 500); }