getConnection(); $id_evaluation = isset($_GET['id']) ? (int)$_GET['id'] : 0; if ($id_evaluation <= 0) { header('Location: enseignant/dashboard.php'); exit(); } // === TRAITEMENT DES ACTIONS === $message = ''; $message_type = ''; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $action = $_POST['action'] ?? ''; try { switch ($action) { case 'toggle_active': $nouveau_statut = (int)$_POST['actif']; $stmt = $db->prepare("UPDATE evaluations SET actif = ? WHERE id_evaluation = ?"); $stmt->execute([$nouveau_statut, $id_evaluation]); $message = "Statut modifié avec succès"; $message_type = "success"; break; case 'update_params': $duree = (int)$_POST['duree_minutes']; $tentatives = (int)$_POST['tentatives_max']; $correction = (int)$_POST['afficher_correction']; $melanger = (int)$_POST['melanger_questions']; $stmt = $db->prepare(" UPDATE evaluations SET duree_minutes = ?, tentatives_max = ?, afficher_correction = ?, melanger_questions = ? WHERE id_evaluation = ? "); $stmt->execute([$duree, $tentatives, $correction, $melanger, $id_evaluation]); $message = "Paramètres mis à jour"; $message_type = "success"; break; case 'update_acces': $id_classe = (int)$_POST['id_classe']; $date_debut = $_POST['date_debut']; $date_fin = $_POST['date_fin']; $actif_acces = (int)$_POST['actif']; $stmt = $db->prepare(" UPDATE acces_evaluations SET date_debut = ?, date_fin = ?, actif = ? WHERE id_evaluation = ? AND id_classe = ? "); $stmt->execute([$date_debut, $date_fin, $actif_acces, $id_evaluation, $id_classe]); $message = "Accès classe mis à jour"; $message_type = "success"; break; case 'add_acces': $id_classe = (int)$_POST['id_classe_new']; $date_debut = $_POST['date_debut_new']; $date_fin = $_POST['date_fin_new']; // Vérifier si l'accès n'existe pas déjà $check = $db->prepare(" SELECT COUNT(*) FROM acces_evaluations WHERE id_evaluation = ? AND id_classe = ? "); $check->execute([$id_evaluation, $id_classe]); if ($check->fetchColumn() == 0) { $stmt = $db->prepare(" INSERT INTO acces_evaluations (id_evaluation, id_classe, date_debut, date_fin, actif) VALUES (?, ?, ?, ?, 1) "); $stmt->execute([$id_evaluation, $id_classe, $date_debut, $date_fin]); $message = "Accès classe ajouté"; $message_type = "success"; } else { $message = "Cette classe a déjà accès à l'évaluation"; $message_type = "warning"; } break; case 'delete_acces': $id_classe = (int)$_POST['id_classe']; $stmt = $db->prepare(" DELETE FROM acces_evaluations WHERE id_evaluation = ? AND id_classe = ? "); $stmt->execute([$id_evaluation, $id_classe]); $message = "Accès classe supprimé"; $message_type = "success"; break; case 'reset_tentatives': $stmt = $db->prepare(" DELETE FROM tentatives_eleves WHERE id_evaluation = ? "); $stmt->execute([$id_evaluation]); $message = "Toutes les tentatives ont été réinitialisées"; $message_type = "success"; break; case 'delete_evaluation': // Supprimer en cascade $stmt = $db->prepare("DELETE FROM evaluations WHERE id_evaluation = ?"); $stmt->execute([$id_evaluation]); header('Location: enseignant/dashboard.php?msg=eval_deleted'); exit(); break; } } catch (PDOException $e) { $message = "Erreur : " . $e->getMessage(); $message_type = "error"; } } // === RÉCUPÉRATION DES DONNÉES === // Informations évaluation $stmt = $db->prepare(" SELECT e.*, COUNT(DISTINCT q.id_question) as nb_questions FROM evaluations e LEFT JOIN questions q ON e.id_evaluation = q.id_evaluation WHERE e.id_evaluation = ? GROUP BY e.id_evaluation "); $stmt->execute([$id_evaluation]); $evaluation = $stmt->fetch(PDO::FETCH_ASSOC); if (!$evaluation) { header('Location: enseignant/dashboard.php'); exit(); } // Statistiques $stmt = $db->prepare(" SELECT COUNT(DISTINCT t.id_eleve) as nb_eleves_participes, COUNT(t.id_tentative) as nb_tentatives_total, SUM(CASE WHEN t.statut = 'terminee' THEN 1 ELSE 0 END) as nb_terminees, AVG(CASE WHEN t.statut = 'terminee' THEN t.note ELSE NULL END) as moyenne FROM tentatives_eleves t WHERE t.id_evaluation = ? "); $stmt->execute([$id_evaluation]); $stats = $stmt->fetch(PDO::FETCH_ASSOC); // Accès par classe $stmt = $db->prepare(" SELECT a.*, c.nom_classe FROM acces_evaluations a JOIN classes c ON a.id_classe = c.id_classe WHERE a.id_evaluation = ? ORDER BY c.nom_classe "); $stmt->execute([$id_evaluation]); $acces_classes = $stmt->fetchAll(PDO::FETCH_ASSOC); // Classes disponibles pour ajout $stmt = $db->prepare(" SELECT c.id_classe, c.nom_classe FROM classes c WHERE c.id_classe NOT IN ( SELECT id_classe FROM acces_evaluations WHERE id_evaluation = ? ) ORDER BY c.nom_classe "); $stmt->execute([$id_evaluation]); $classes_disponibles = $stmt->fetchAll(PDO::FETCH_ASSOC); ?>
| Classe | Date début | Date fin | Statut | Actions |
|---|---|---|---|---|
Aucune classe n'a accès à cette évaluation.
0): ?>