erreur corrigée
This commit is contained in:
@ -74,12 +74,11 @@ if ($isEleveLibre) {
|
|||||||
$query4Dernieres = "SELECT
|
$query4Dernieres = "SELECT
|
||||||
e.id_evaluation,
|
e.id_evaluation,
|
||||||
e.titre,
|
e.titre,
|
||||||
e.chapitre,
|
e.description,
|
||||||
te.note,
|
te.note,
|
||||||
te.pourcentage,
|
te.pourcentage,
|
||||||
te.date_fin,
|
te.date_fin,
|
||||||
te.temps_passe_secondes,
|
te.temps_passe_secondes
|
||||||
(SELECT COUNT(*) FROM questions WHERE id_evaluation = e.id_evaluation) as nb_questions
|
|
||||||
FROM tentatives_eleves te
|
FROM tentatives_eleves te
|
||||||
INNER JOIN evaluations e ON te.id_evaluation = e.id_evaluation
|
INNER JOIN evaluations e ON te.id_evaluation = e.id_evaluation
|
||||||
WHERE te.id_eleve = ?
|
WHERE te.id_eleve = ?
|
||||||
@ -89,18 +88,29 @@ $query4Dernieres = "SELECT
|
|||||||
|
|
||||||
$dernieresEvals = $db->fetchAll($query4Dernieres, [$user['id_utilisateur']]);
|
$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
|
// Calculer la moyenne des 4 dernières
|
||||||
$moyenne4Dernieres = 0;
|
$moyenne4Dernieres = 0;
|
||||||
if (!empty($dernieresEvals)) {
|
if (!empty($dernieresEvals)) {
|
||||||
$somme = array_sum(array_column($dernieresEvals, 'note'));
|
$notes = array_filter(array_column($dernieresEvals, 'note'), function($n) {
|
||||||
$moyenne4Dernieres = $somme / count($dernieresEvals);
|
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
|
// Récupérer TOUTES les évaluations terminées pour le graphique
|
||||||
$queryToutesEvals = "SELECT
|
$queryToutesEvals = "SELECT
|
||||||
e.id_evaluation,
|
e.id_evaluation,
|
||||||
e.titre,
|
e.titre,
|
||||||
e.chapitre,
|
e.description,
|
||||||
te.note,
|
te.note,
|
||||||
te.pourcentage,
|
te.pourcentage,
|
||||||
te.date_fin
|
te.date_fin
|
||||||
@ -555,14 +565,16 @@ $stats = $db->fetchOne($queryStats, [$user['id_utilisateur']]) ?? [
|
|||||||
<?= htmlspecialchars($eval['titre']) ?>
|
<?= htmlspecialchars($eval['titre']) ?>
|
||||||
</h4>
|
</h4>
|
||||||
<div class="chapitre">
|
<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>
|
||||||
|
|
||||||
<div class="note-display-large">
|
<div class="note-display-large">
|
||||||
<div>
|
<div>
|
||||||
|
<?php if ($eval['nb_questions'] > 0): ?>
|
||||||
<div class="note-fraction">
|
<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>
|
</div>
|
||||||
|
<?php endif; ?>
|
||||||
<div class="note-sur-20">
|
<div class="note-sur-20">
|
||||||
<?= number_format($eval['note'], 2) ?>/20
|
<?= number_format($eval['note'], 2) ?>/20
|
||||||
</div>
|
</div>
|
||||||
@ -572,7 +584,7 @@ $stats = $db->fetchOne($queryStats, [$user['id_utilisateur']]) ?? [
|
|||||||
<?= round($eval['pourcentage']) ?>%
|
<?= round($eval['pourcentage']) ?>%
|
||||||
</div>
|
</div>
|
||||||
<div style="font-size: 11px; color: #999;">
|
<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>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -584,10 +596,12 @@ $stats = $db->fetchOne($queryStats, [$user['id_utilisateur']]) ?? [
|
|||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
|
|
||||||
<!-- Moyenne des 4 dernières -->
|
<!-- Moyenne des 4 dernières -->
|
||||||
|
<?php if ($moyenne4Dernieres > 0): ?>
|
||||||
<div class="moyenne-4">
|
<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 class="value"><?= number_format($moyenne4Dernieres, 2) ?>/20</div>
|
||||||
</div>
|
</div>
|
||||||
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
@ -623,8 +637,7 @@ $stats = $db->fetchOne($queryStats, [$user['id_utilisateur']]) ?? [
|
|||||||
<p><?= htmlspecialchars($eval['description']) ?></p>
|
<p><?= htmlspecialchars($eval['description']) ?></p>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<p>
|
<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>
|
</p>
|
||||||
<?php if (isset($eval['fin_acces'])): ?>
|
<?php if (isset($eval['fin_acces'])): ?>
|
||||||
<p style="color: #f57c00;">
|
<p style="color: #f57c00;">
|
||||||
@ -771,7 +784,8 @@ $stats = $db->fetchOne($queryStats, [$user['id_utilisateur']]) ?? [
|
|||||||
if (context.datasetIndex === 0) {
|
if (context.datasetIndex === 0) {
|
||||||
const index = context.dataIndex;
|
const index = context.dataIndex;
|
||||||
const eval = toutesEvaluations[index];
|
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 '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user