erreur corrigée

This commit is contained in:
nicoboy
2026-01-02 16:37:21 +01:00
parent 8cad794c83
commit 1722dd9c7f

View File

@ -74,12 +74,11 @@ if ($isEleveLibre) {
$query4Dernieres = "SELECT
e.id_evaluation,
e.titre,
e.chapitre,
e.description,
te.note,
te.pourcentage,
te.date_fin,
te.temps_passe_secondes,
(SELECT COUNT(*) FROM questions WHERE id_evaluation = e.id_evaluation) as nb_questions
te.temps_passe_secondes
FROM tentatives_eleves te
INNER JOIN evaluations e ON te.id_evaluation = e.id_evaluation
WHERE te.id_eleve = ?
@ -89,18 +88,29 @@ $query4Dernieres = "SELECT
$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)) {
$somme = array_sum(array_column($dernieresEvals, 'note'));
$moyenne4Dernieres = $somme / count($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.chapitre,
e.description,
te.note,
te.pourcentage,
te.date_fin
@ -555,14 +565,16 @@ $stats = $db->fetchOne($queryStats, [$user['id_utilisateur']]) ?? [
<?= htmlspecialchars($eval['titre']) ?>
</h4>
<div class="chapitre">
<?= htmlspecialchars($eval['chapitre'] ?? 'Non spécifié') ?>
<?= !empty($eval['description']) ? htmlspecialchars(substr($eval['description'], 0, 50)) . (strlen($eval['description']) > 50 ? '...' : '') : 'Évaluation terminée' ?>
</div>
<div class="note-display-large">
<div>
<?php if ($eval['nb_questions'] > 0): ?>
<div class="note-fraction">
<?= number_format($eval['note'], 1) ?>/<?= $eval['nb_questions'] ?> questions
<?= round($eval['pourcentage'] * $eval['nb_questions'] / 100, 1) ?>/<?= $eval['nb_questions'] ?> questions
</div>
<?php endif; ?>
<div class="note-sur-20">
<?= number_format($eval['note'], 2) ?>/20
</div>
@ -572,7 +584,7 @@ $stats = $db->fetchOne($queryStats, [$user['id_utilisateur']]) ?? [
<?= round($eval['pourcentage']) ?>%
</div>
<div style="font-size: 11px; color: #999;">
⏱️ <?= gmdate('i:s', $eval['temps_passe_secondes']) ?>
⏱️ <?= gmdate('i:s', $eval['temps_passe_secondes'] ?? 0) ?>
</div>
</div>
</div>
@ -584,10 +596,12 @@ $stats = $db->fetchOne($queryStats, [$user['id_utilisateur']]) ?? [
<?php endforeach; ?>
<!-- Moyenne des 4 dernières -->
<?php if ($moyenne4Dernieres > 0): ?>
<div class="moyenne-4">
<h3>Moyenne sur ces 4 évaluations</h3>
<h3>Moyenne sur ces <?= count($dernieresEvals) ?> évaluation<?= count($dernieresEvals) > 1 ? 's' : '' ?></h3>
<div class="value"><?= number_format($moyenne4Dernieres, 2) ?>/20</div>
</div>
<?php endif; ?>
</div>
</div>
<?php endif; ?>
@ -623,8 +637,7 @@ $stats = $db->fetchOne($queryStats, [$user['id_utilisateur']]) ?? [
<p><?= htmlspecialchars($eval['description']) ?></p>
<?php endif; ?>
<p>
<strong>Chapitre :</strong> <?= htmlspecialchars($eval['chapitre'] ?? 'Non spécifié') ?>
| <strong>Durée :</strong> <?= $eval['duree_minutes'] ?? 'Libre' ?> min
<strong>Durée :</strong> <?= $eval['duree_minutes'] ?? 'Libre' ?> min
</p>
<?php if (isset($eval['fin_acces'])): ?>
<p style="color: #f57c00;">
@ -771,7 +784,8 @@ $stats = $db->fetchOne($queryStats, [$user['id_utilisateur']]) ?? [
if (context.datasetIndex === 0) {
const index = context.dataIndex;
const eval = toutesEvaluations[index];
return `Chapitre: ${eval.chapitre || 'Non spécifié'}`;
const date = new Date(eval.date_fin);
return `Date: ${date.toLocaleDateString('fr-FR')}`;
}
return '';
}