false, 'error' => 'Non authentifié']); exit(); } // $auth = new Auth(); // MIGRÉ vers SessionManager $user = currentUser(); $db = Database::getInstance()->getConnection(); // Récupérer les données POST $id_tentative = isset($_POST['id_tentative']) ? (int)$_POST['id_tentative'] : 0; $id_evaluation = isset($_POST['id_evaluation']) ? (int)$_POST['id_evaluation'] : 0; if ($id_tentative <= 0) { echo json_encode(['success' => false, 'error' => 'Tentative invalide']); exit(); } // Vérifier que la tentative appartient bien à l'élève $stmt = $db->prepare(" SELECT * FROM tentatives_eleves WHERE id_tentative = ? AND id_eleve = ? AND statut = 'en_cours' "); $stmt->execute([$id_tentative, $user['id_utilisateur']]); $tentative = $stmt->fetch(PDO::FETCH_ASSOC); if (!$tentative) { echo json_encode(['success' => false, 'error' => 'Tentative introuvable ou terminée']); exit(); } // Extraire les réponses du POST $reponses = []; foreach ($_POST as $key => $value) { if (strpos($key, 'reponse_') === 0) { $id_question = str_replace('reponse_', '', $key); $reponses[$id_question] = $value; } } // Sauvegarder dans la BDD try { $stmt = $db->prepare(" UPDATE tentatives_eleves SET reponses_json = ?, derniere_sauvegarde = NOW() WHERE id_tentative = ? "); $reponses_json = json_encode($reponses, JSON_UNESCAPED_UNICODE); $stmt->execute([$reponses_json, $id_tentative]); echo json_encode([ 'success' => true, 'message' => 'Réponses sauvegardées', 'nb_reponses' => count($reponses), 'timestamp' => date('H:i:s') ]); } catch (Exception $e) { error_log("Erreur sauvegarde réponses: " . $e->getMessage()); echo json_encode([ 'success' => false, 'error' => 'Erreur lors de la sauvegarde' ]); } ?>