Initial commit (code), runtime ignoré, secrets exclus
This commit is contained in:
84
sauvegarder_reponses.php
Normal file
84
sauvegarder_reponses.php
Normal file
@ -0,0 +1,84 @@
|
||||
<?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'
|
||||
]);
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user