diff --git a/htdocs/admin/importer.php b/htdocs/admin/importer.php
new file mode 100644
index 0000000..095aa2f
--- /dev/null
+++ b/htdocs/admin/importer.php
@@ -0,0 +1,334 @@
+prepare("DELETE FROM timetable WHERE class_id = ?");
+ $stmt->bind_param("i", $classe_id);
+ $stmt->execute();
+ $stmt->close();
+
+ $inserimenti = 0;
+ $materie_create = [];
+
+ // Processa ogni giorno
+ foreach ($data['giorni'] as $giorno => $ore) {
+ foreach ($ore as $oraData) {
+ // Salta ore vuote
+ if ($oraData['materia'] === null) {
+ continue;
+ }
+
+ $ora = $oraData['ora'];
+ $materia = $oraData['materia'];
+ $materiaCompleta = $oraData['materiaCompleta'];
+ $docenti = $oraData['docenti'];
+ $laboratori = $oraData['laboratori']; // Ora è un array
+
+ // Se non ci sono docenti, salta (situazione anomala)
+ if (count($docenti) === 0) {
+ continue;
+ }
+
+ // Caso 1: Stesso numero di docenti e laboratori → associazione 1:1
+ if (count($docenti) === count($laboratori) && count($laboratori) > 0) {
+ foreach ($docenti as $idx => $docente) {
+ $laboratorio = $laboratori[$idx];
+
+ // Cerca/crea materia
+ $stmt = $conn->prepare("SELECT id FROM subjects WHERE name = ? AND teacher = ? AND room = ?");
+ $stmt->bind_param("sss", $materiaCompleta, $docente, $laboratorio);
+ $stmt->execute();
+ $result = $stmt->get_result();
+
+ if ($result->num_rows > 0) {
+ $subject_id = $result->fetch_assoc()['id'];
+ } else {
+ $stmt2 = $conn->prepare("INSERT INTO subjects (name, teacher, room) VALUES (?, ?, ?)");
+ $stmt2->bind_param("sss", $materiaCompleta, $docente, $laboratorio);
+ $stmt2->execute();
+ $subject_id = $conn->insert_id;
+ $stmt2->close();
+ $materie_create[] = "$materiaCompleta ($docente - $laboratorio)";
+ }
+ $stmt->close();
+
+ // Inserisci in timetable
+ $stmt3 = $conn->prepare("INSERT INTO timetable (class_id, day, hour, subject_id) VALUES (?, ?, ?, ?)");
+ $stmt3->bind_param("isii", $classe_id, $giorno, $ora, $subject_id);
+ $stmt3->execute();
+ $stmt3->close();
+ $inserimenti++;
+ }
+ }
+ // Caso 2: Più docenti, un laboratorio (o nessuno) → stesso laboratorio per tutti
+ else if (count($laboratori) <= 1) {
+ $laboratorio = count($laboratori) > 0 ? $laboratori[0] : null;
+
+ foreach ($docenti as $docente) {
+ // Cerca/crea materia
+ if ($laboratorio) {
+ $stmt = $conn->prepare("SELECT id FROM subjects WHERE name = ? AND teacher = ? AND room = ?");
+ $stmt->bind_param("sss", $materiaCompleta, $docente, $laboratorio);
+ } else {
+ $stmt = $conn->prepare("SELECT id FROM subjects WHERE name = ? AND teacher = ? AND (room IS NULL OR room = '')");
+ $stmt->bind_param("ss", $materiaCompleta, $docente);
+ }
+
+ $stmt->execute();
+ $result = $stmt->get_result();
+
+ if ($result->num_rows > 0) {
+ $subject_id = $result->fetch_assoc()['id'];
+ } else {
+ $stmt2 = $conn->prepare("INSERT INTO subjects (name, teacher, room) VALUES (?, ?, ?)");
+ $stmt2->bind_param("sss", $materiaCompleta, $docente, $laboratorio);
+ $stmt2->execute();
+ $subject_id = $conn->insert_id;
+ $stmt2->close();
+ $materie_create[] = "$materiaCompleta ($docente" . ($laboratorio ? " - $laboratorio" : "") . ")";
+ }
+ $stmt->close();
+
+ // Inserisci in timetable
+ $stmt3 = $conn->prepare("INSERT INTO timetable (class_id, day, hour, subject_id) VALUES (?, ?, ?, ?)");
+ $stmt3->bind_param("isii", $classe_id, $giorno, $ora, $subject_id);
+ $stmt3->execute();
+ $stmt3->close();
+ $inserimenti++;
+ }
+ }
+ // Caso 3: Più laboratori che docenti → usa il primo laboratorio per tutti
+ else {
+ $laboratorio = $laboratori[0];
+
+ foreach ($docenti as $docente) {
+ $stmt = $conn->prepare("SELECT id FROM subjects WHERE name = ? AND teacher = ? AND room = ?");
+ $stmt->bind_param("sss", $materiaCompleta, $docente, $laboratorio);
+ $stmt->execute();
+ $result = $stmt->get_result();
+
+ if ($result->num_rows > 0) {
+ $subject_id = $result->fetch_assoc()['id'];
+ } else {
+ $stmt2 = $conn->prepare("INSERT INTO subjects (name, teacher, room) VALUES (?, ?, ?)");
+ $stmt2->bind_param("sss", $materiaCompleta, $docente, $laboratorio);
+ $stmt2->execute();
+ $subject_id = $conn->insert_id;
+ $stmt2->close();
+ $materie_create[] = "$materiaCompleta ($docente - $laboratorio)";
+ }
+ $stmt->close();
+
+ $stmt3 = $conn->prepare("INSERT INTO timetable (class_id, day, hour, subject_id) VALUES (?, ?, ?, ?)");
+ $stmt3->bind_param("isii", $classe_id, $giorno, $ora, $subject_id);
+ $stmt3->execute();
+ $stmt3->close();
+ $inserimenti++;
+ }
+ }
+ }
+ }
+
+ $message = "Importazione completata con successo!
";
+ $message .= "- Inserite $inserimenti ore di lezione
";
+ if (count($materie_create) > 0) {
+ $message .= "- Create " . count($materie_create) . " nuove materie";
+ }
+ $messageType = "success";
+
+ } catch (Exception $e) {
+ $message = "Errore durante l'importazione: " . htmlspecialchars($e->getMessage());
+ $messageType = "error";
+ }
+ }
+}
+?>
+
+
+
node server.js)+ Copyright (C) 2025 EmmeV. - Released under GNU AGPL 3.0 License. +
+Gestisci Classi Gestisci Materie Gestisci Orario + 🔄 Importa Orario Cambia Password'; @@ -48,4 +49,3 @@ if (!isset($_SESSION['admin'])) {