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.description, 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 DESC LIMIT 4"; $dernieresEvals = $db->fetchAll($query4Dernieres, [$user['id_utilisateur']]); // Ajouter le nombre de questions pour chaque évaluation foreach ($dernieresEvals as &$eval) { $queryNbQuestions = "SELECT COUNT(*) as nb FROM questions WHERE id_evaluation = ?"; $result = $db->fetchOne($queryNbQuestions, [$eval['id_evaluation']]); $eval['nb_questions'] = $result['nb'] ?? 0; } // Calculer la moyenne des 4 dernières $moyenne4Dernieres = 0; if (!empty($dernieresEvals)) { $notes = array_filter(array_column($dernieresEvals, 'note'), function($n) { return $n !== null && is_numeric($n); }); if (!empty($notes)) { $moyenne4Dernieres = array_sum($notes) / count($notes); } } // Récupérer TOUTES les évaluations terminées pour le graphique $queryToutesEvals = "SELECT e.id_evaluation, e.titre, e.description, 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

50 ? '...' : '') : 'Évaluation terminée' ?>
0): ?>
/ questions
/20
%
0): ?>

Moyenne sur ces évaluation 1 ? 's' : '' ?>

/20
1): ?>

📈 Ma progression

📝 Évaluations disponibles

Aucune évaluation disponible pour le moment

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

Durée : min

⏰ Disponible jusqu'au

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