Files
webval/sauvegarder_reponses.php

85 lines
2.3 KiB
PHP

<?php
/**
* SAUVEGARDE AUTO DES RÉPONSES
* Appelé en AJAX depuis passer_evaluation.php
*/
header('Content-Type: application/json');
define('APP_ROOT', dirname(__DIR__));
require_once __DIR__ . '/config/config.php';
require_once __DIR__ . '/config/database.php';
// session_start(); // Géré par config/session.php
// Vérification authentification
if (!isLoggedIn() || !isEleve()) {
echo json_encode(['success' => 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'
]);
}
?>