getConnection(); /* ========================================== PAGE DATA ========================================== */ require_once __DIR__ . '/include/training_coverage.php'; $sql = " SELECT tt.*, (SELECT COUNT(*) FROM employee_trainings et WHERE et.training_topic_id = tt.id) AS trainings_count FROM training_topics tt ORDER BY tt.sort_order ASC, tt.name ASC "; $topics = $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC); /* Coperture: [topic_id => [ ['id'=>..,'name'=>..], ... ]] */ $coverageRows = $pdo->query(" SELECT c.topic_id, c.covered_topic_id, tt.name AS covered_name FROM training_topic_coverage c JOIN training_topics tt ON tt.id = c.covered_topic_id ORDER BY tt.sort_order, tt.name ")->fetchAll(PDO::FETCH_ASSOC); $coverageByTopic = []; foreach ($coverageRows as $cr) { $coverageByTopic[(int)$cr['topic_id']][] = [ 'id' => (int)$cr['covered_topic_id'], 'name' => $cr['covered_name'], ]; } /* Mappa inversa: chi copre questo corso */ $coveredByTopic = []; foreach ($coverageRows as $cr) { $coveredByTopic[(int)$cr['covered_topic_id']][] = (int)$cr['topic_id']; } $topicNames = []; foreach ($topics as $t) $topicNames[(int)$t['id']] = $t['name']; ?> Gestione Corsi di Formazione - <?= htmlspecialchars($titlewebsite, ENT_QUOTES, 'UTF-8'); ?>
Corsi Formazione
Elenco Corsi / Training Topics
ID Nome Descrizione Frequenza
(mesi)
Promemoria
(giorni)
Ordine Stato Formazioni Copre Azioni
β˜… Obbl. una tantum ⛓️ β€”
↑
Nessun corso presente
β˜… Obbl.

Frequenza: Promemoria: gg Formazioni: Ordine:
⛓️ ↑