correction ereur note
This commit is contained in:
@ -93,8 +93,12 @@ $dernieresEvals = $db->fetchAll($query4Dernieres, [$user['id_utilisateur']]);
|
||||
// Calculer la moyenne des 4 dernières (arrondie au demi-point supérieur)
|
||||
$moyenne4Dernieres = 0;
|
||||
if (!empty($dernieresEvals)) {
|
||||
$somme = array_sum(array_column($dernieresEvals, 'note'));
|
||||
$moyenne_brute = $somme / count($dernieresEvals);
|
||||
$somme_notes_sur_20 = 0;
|
||||
foreach ($dernieresEvals as $eval) {
|
||||
$note_sur_20 = $eval['nb_questions'] > 0 ? ($eval['note'] / $eval['nb_questions']) * 20 : 0;
|
||||
$somme_notes_sur_20 += $note_sur_20;
|
||||
}
|
||||
$moyenne_brute = $somme_notes_sur_20 / count($dernieresEvals);
|
||||
$moyenne4Dernieres = ceil($moyenne_brute * 2) / 2; // Arrondi demi-point sup
|
||||
}
|
||||
|
||||
@ -118,7 +122,9 @@ $toutesEvals = $db->fetchAll($queryToutesEvals, [$user['id_utilisateur']]);
|
||||
$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
|
||||
AVG(CASE WHEN t.statut = 'terminee'
|
||||
THEN (t.note / (SELECT COUNT(*) FROM questions WHERE id_evaluation = t.id_evaluation)) * 20
|
||||
ELSE NULL END) as moyenne_generale
|
||||
FROM tentatives_eleves t
|
||||
WHERE t.id_eleve = ?";
|
||||
|
||||
@ -549,11 +555,14 @@ if ($stats['moyenne_generale'] !== null) {
|
||||
|
||||
<div class="dernieres-evals-grid">
|
||||
<?php foreach ($dernieresEvals as $eval):
|
||||
// Arrondir la note au demi-point supérieur
|
||||
$note_arrondie = ceil($eval['note'] * 2) / 2;
|
||||
// Convertir la note brute en note sur 20
|
||||
$note_sur_20 = $eval['nb_questions'] > 0 ? ($eval['note'] / $eval['nb_questions']) * 20 : 0;
|
||||
|
||||
// Calculer le nombre de questions réussies
|
||||
$questions_reussies = ($eval['note'] / 20) * $eval['nb_questions'];
|
||||
// Arrondir au demi-point supérieur
|
||||
$note_arrondie = ceil($note_sur_20 * 2) / 2;
|
||||
|
||||
// Le nombre de questions réussies = la note brute elle-même !
|
||||
$questions_reussies = $eval['note'];
|
||||
?>
|
||||
<div class="eval-card-small">
|
||||
<h4 title="<?= htmlspecialchars($eval['titre']) ?>">
|
||||
@ -645,7 +654,14 @@ if ($stats['moyenne_generale'] !== null) {
|
||||
|
||||
<?php if ($statut === 'terminee'): ?>
|
||||
<?php
|
||||
$note_affichee = ceil($eval['note_obtenue'] * 2) / 2;
|
||||
// Récupérer le nombre de questions pour cette évaluation
|
||||
$queryNbQ = "SELECT COUNT(*) as nb FROM questions WHERE id_evaluation = ?";
|
||||
$resultNbQ = $db->fetchOne($queryNbQ, [$eval['id_evaluation']]);
|
||||
$nb_q = $resultNbQ['nb'] ?? 1;
|
||||
|
||||
// Calculer la note sur 20
|
||||
$note_sur_20 = ($eval['note_obtenue'] / $nb_q) * 20;
|
||||
$note_affichee = ceil($note_sur_20 * 2) / 2;
|
||||
?>
|
||||
<span class="note-display">
|
||||
<?= number_format($note_affichee, 1) ?>/20
|
||||
@ -683,16 +699,20 @@ if ($stats['moyenne_generale'] !== null) {
|
||||
// Données pour le graphique
|
||||
const toutesEvaluations = <?= json_encode($toutesEvals) ?>;
|
||||
|
||||
// Préparer les données avec notes arrondies au demi-point supérieur
|
||||
// Préparer les labels
|
||||
const labels = toutesEvaluations.map((e, index) => {
|
||||
const date = new Date(e.date_fin);
|
||||
return `Eval ${index + 1}\n${date.getDate()}/${date.getMonth() + 1}`;
|
||||
});
|
||||
|
||||
// Arrondir toutes les notes au demi-point supérieur
|
||||
// Récupérer le nombre de questions pour chaque évaluation (via AJAX)
|
||||
// Pour simplifier, on utilise le pourcentage pour recalculer
|
||||
const notes = toutesEvaluations.map(e => {
|
||||
const note = parseFloat(e.note);
|
||||
return Math.ceil(note * 2) / 2;
|
||||
// note brute → note sur 20 via le pourcentage
|
||||
// pourcentage = (note / nb_questions) * 100
|
||||
// donc note_sur_20 = (pourcentage / 100) * 20 = pourcentage / 5
|
||||
const note_sur_20 = parseFloat(e.pourcentage) / 5;
|
||||
return Math.ceil(note_sur_20 * 2) / 2; // Arrondir demi-point sup
|
||||
});
|
||||
|
||||
// Calculer la moyenne mobile (sur 3 évaluations)
|
||||
@ -700,7 +720,7 @@ if ($stats['moyenne_generale'] !== null) {
|
||||
if (index < 2) return null;
|
||||
const sum = arr[index - 2] + arr[index - 1] + arr[index];
|
||||
const avg = sum / 3;
|
||||
return Math.ceil(avg * 2) / 2; // Arrondir aussi la moyenne mobile
|
||||
return Math.ceil(avg * 2) / 2;
|
||||
});
|
||||
|
||||
// Créer le graphique
|
||||
|
||||
Reference in New Issue
Block a user