fetchAll($queryEvals, [$user['id_utilisateur']]); } else { if ($user['id_classe']) { $queryEvals = "SELECT DISTINCT e.*, ae.date_debut as debut_acces, ae.date_fin as fin_acces, COALESCE(t.statut, 'non_commence') as statut_tentative, t.note as note_obtenue, t.date_debut as date_tentative FROM evaluations e INNER JOIN acces_evaluations ae ON e.id_evaluation = ae.id_evaluation LEFT JOIN tentatives_eleves t ON e.id_evaluation = t.id_evaluation AND t.id_eleve = ? WHERE ae.id_classe = ? AND ae.actif = 1 AND NOW() BETWEEN ae.date_debut AND ae.date_fin AND e.actif = 1 ORDER BY ae.date_fin ASC, e.titre ASC"; $evaluations = $db->fetchAll($queryEvals, [$user['id_utilisateur'], $user['id_classe']]); } else { $evaluations = []; } } // 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 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 = ?"; $stats = $db->fetchOne($queryStats, [$user['id_utilisateur']]) ?? [ 'nb_evaluations_passees' => 0, 'nb_evaluations_terminees' => 0, 'moyenne_generale' => null ]; ?> Dashboard Élève - <?= htmlspecialchars($user['prenom'] . ' ' . $user['nom']) ?>
Déconnexion

📚 Évaluations passées

✅ Évaluations terminées

📊 Moyenne générale

1): ?>
Sur évaluation 1 ? 's' : '' ?>
ℹ️ Mode Soutien : Vous êtes inscrit dans le groupe de soutien. Les évaluations que vous passez ne comptent pas dans votre bulletin scolaire, elles sont là pour vous entraîner et progresser.

📋 Mes 4 dernières évaluations

/ questions
/20
%
⏱️

Moyenne sur ces 4 évaluations

/20
1): ?>

📈 Ma progression

📝 Évaluations disponibles

Aucune évaluation disponible pour le moment

Les nouvelles évaluations apparaîtront ici lorsque votre enseignant les publiera.

Chapitre : | Durée : min

⏰ Disponible jusqu'au

/20 ✅ Terminé Voir le résultat ⏳ En cours Reprendre 🆕 Nouveau Commencer
1): ?>