diff --git a/eleve/dashboard.php b/eleve/dashboard.php index ba34c29..2d9b976 100644 --- a/eleve/dashboard.php +++ b/eleve/dashboard.php @@ -1,7 +1,7 @@ fetchAll($queryEvals, [$user['id_utilisateur']]); } else { - // Élève classe fixe : évaluations de sa classe if ($user['id_classe']) { $queryEvals = "SELECT DISTINCT e.*, ae.date_debut as debut_acces, @@ -72,15 +70,53 @@ if ($isEleveLibre) { } } -// Récupérer les statistiques de l'élève +// Récupérer les 4 dernières évaluations terminées +$query4Dernieres = "SELECT + e.id_evaluation, + e.titre, + e.chapitre, + te.note, + te.pourcentage, + te.date_fin, + te.temps_passe_secondes, + (SELECT COUNT(*) FROM questions WHERE id_evaluation = e.id_evaluation) as nb_questions + FROM tentatives_eleves te + INNER JOIN evaluations e ON te.id_evaluation = e.id_evaluation + WHERE te.id_eleve = ? + AND te.statut = 'terminee' + ORDER BY te.date_fin DESC + LIMIT 4"; + +$dernieresEvals = $db->fetchAll($query4Dernieres, [$user['id_utilisateur']]); + +// Calculer la moyenne des 4 dernières +$moyenne4Dernieres = 0; +if (!empty($dernieresEvals)) { + $somme = array_sum(array_column($dernieresEvals, 'note')); + $moyenne4Dernieres = $somme / count($dernieresEvals); +} + +// Récupérer TOUTES les évaluations terminées pour le graphique +$queryToutesEvals = "SELECT + e.id_evaluation, + e.titre, + e.chapitre, + te.note, + te.pourcentage, + te.date_fin + FROM tentatives_eleves te + INNER JOIN evaluations e ON te.id_evaluation = e.id_evaluation + WHERE te.id_eleve = ? + AND te.statut = 'terminee' + ORDER BY te.date_fin ASC"; + +$toutesEvals = $db->fetchAll($queryToutesEvals, [$user['id_utilisateur']]); + +// Récupérer les statistiques générales $queryStats = "SELECT COUNT(DISTINCT t.id_evaluation) as nb_evaluations_passees, COUNT(CASE WHEN t.statut = 'terminee' THEN 1 END) as nb_evaluations_terminees, - AVG( - CASE WHEN t.statut = 'terminee' - THEN CEILING((t.note / e.note_totale * 20) * 2) / 2 - ELSE NULL END - ) as moyenne_generale + AVG(CASE WHEN t.statut = 'terminee' THEN t.note ELSE NULL END) as moyenne_generale FROM tentatives_eleves t INNER JOIN evaluations e ON t.id_evaluation = e.id_evaluation WHERE t.id_eleve = ?"; @@ -98,6 +134,7 @@ $stats = $db->fetchOne($queryStats, [$user['id_utilisateur']]) ?? [
Chapitre : = htmlspecialchars($eval['chapitre'] ?? 'Non spécifié') ?> | Durée : = $eval['duree_minutes'] ?? 'Libre' ?> min - | Note : /= $eval['note_totale'] ?? 20 ?>
@@ -417,10 +640,10 @@ $stats = $db->fetchOne($queryStats, [$user['id_utilisateur']]) ?? [ - = number_format($eval['note_obtenue'], 2) ?>/= $eval['note_totale'] ?? 20 ?> + = number_format($eval['note_obtenue'], 2) ?>/20 ✅ Terminé - Voir le résultat @@ -446,5 +669,150 @@ $stats = $db->fetchOne($queryStats, [$user['id_utilisateur']]) ?? [