correction erreur notes
This commit is contained in:
@ -32,6 +32,7 @@ if ($isEleveLibre) {
|
|||||||
$queryEvals = "SELECT DISTINCT e.*,
|
$queryEvals = "SELECT DISTINCT e.*,
|
||||||
COALESCE(t.statut, 'non_commence') as statut_tentative,
|
COALESCE(t.statut, 'non_commence') as statut_tentative,
|
||||||
t.note as note_obtenue,
|
t.note as note_obtenue,
|
||||||
|
t.note_sur as note_sur_obtenue,
|
||||||
t.date_debut as date_tentative
|
t.date_debut as date_tentative
|
||||||
FROM evaluations e
|
FROM evaluations e
|
||||||
INNER JOIN acces_evaluations ae ON e.id_evaluation = ae.id_evaluation
|
INNER JOIN acces_evaluations ae ON e.id_evaluation = ae.id_evaluation
|
||||||
@ -53,6 +54,7 @@ if ($isEleveLibre) {
|
|||||||
ae.date_fin as fin_acces,
|
ae.date_fin as fin_acces,
|
||||||
COALESCE(t.statut, 'non_commence') as statut_tentative,
|
COALESCE(t.statut, 'non_commence') as statut_tentative,
|
||||||
t.note as note_obtenue,
|
t.note as note_obtenue,
|
||||||
|
t.note_sur as note_sur_obtenue,
|
||||||
t.date_debut as date_tentative
|
t.date_debut as date_tentative
|
||||||
FROM evaluations e
|
FROM evaluations e
|
||||||
INNER JOIN acces_evaluations ae ON e.id_evaluation = ae.id_evaluation
|
INNER JOIN acces_evaluations ae ON e.id_evaluation = ae.id_evaluation
|
||||||
@ -95,7 +97,7 @@ $moyenne4Dernieres = 0;
|
|||||||
if (!empty($dernieresEvals)) {
|
if (!empty($dernieresEvals)) {
|
||||||
$somme_notes_sur_20 = 0;
|
$somme_notes_sur_20 = 0;
|
||||||
foreach ($dernieresEvals as $eval) {
|
foreach ($dernieresEvals as $eval) {
|
||||||
$note_sur_20 = $eval['nb_questions'] > 0 ? ($eval['note'] / $eval['nb_questions']) * 20 : 0;
|
$note_sur_20 = $eval['note_sur'] > 0 ? ($eval['note'] / $eval['note_sur']) * 20 : 0;
|
||||||
$somme_notes_sur_20 += $note_sur_20;
|
$somme_notes_sur_20 += $note_sur_20;
|
||||||
}
|
}
|
||||||
$moyenne_brute = $somme_notes_sur_20 / count($dernieresEvals);
|
$moyenne_brute = $somme_notes_sur_20 / count($dernieresEvals);
|
||||||
@ -108,6 +110,7 @@ $queryToutesEvals = "SELECT
|
|||||||
e.titre,
|
e.titre,
|
||||||
e.description,
|
e.description,
|
||||||
te.note,
|
te.note,
|
||||||
|
te.note_sur,
|
||||||
te.pourcentage,
|
te.pourcentage,
|
||||||
te.date_fin
|
te.date_fin
|
||||||
FROM tentatives_eleves te
|
FROM tentatives_eleves te
|
||||||
@ -122,8 +125,8 @@ $toutesEvals = $db->fetchAll($queryToutesEvals, [$user['id_utilisateur']]);
|
|||||||
$queryStats = "SELECT
|
$queryStats = "SELECT
|
||||||
COUNT(DISTINCT t.id_evaluation) as nb_evaluations_passees,
|
COUNT(DISTINCT t.id_evaluation) as nb_evaluations_passees,
|
||||||
COUNT(CASE WHEN t.statut = 'terminee' THEN 1 END) as nb_evaluations_terminees,
|
COUNT(CASE WHEN t.statut = 'terminee' THEN 1 END) as nb_evaluations_terminees,
|
||||||
AVG(CASE WHEN t.statut = 'terminee'
|
AVG(CASE WHEN t.statut = 'terminee' AND t.note_sur > 0
|
||||||
THEN (t.note / (SELECT COUNT(*) FROM questions WHERE id_evaluation = t.id_evaluation)) * 20
|
THEN (t.note / t.note_sur) * 20
|
||||||
ELSE NULL END) as moyenne_generale
|
ELSE NULL END) as moyenne_generale
|
||||||
FROM tentatives_eleves t
|
FROM tentatives_eleves t
|
||||||
WHERE t.id_eleve = ?";
|
WHERE t.id_eleve = ?";
|
||||||
@ -555,8 +558,9 @@ if ($stats['moyenne_generale'] !== null) {
|
|||||||
|
|
||||||
<div class="dernieres-evals-grid">
|
<div class="dernieres-evals-grid">
|
||||||
<?php foreach ($dernieresEvals as $eval):
|
<?php foreach ($dernieresEvals as $eval):
|
||||||
// Convertir la note brute en note sur 20
|
// Convertir la note brute en note sur 20 en utilisant le barème réel
|
||||||
$note_sur_20 = $eval['nb_questions'] > 0 ? ($eval['note'] / $eval['nb_questions']) * 20 : 0;
|
// note_sur = barème total (80, 50, 20, etc.)
|
||||||
|
$note_sur_20 = $eval['note_sur'] > 0 ? ($eval['note'] / $eval['note_sur']) * 20 : 0;
|
||||||
|
|
||||||
// Arrondir au demi-point supérieur
|
// Arrondir au demi-point supérieur
|
||||||
$note_arrondie = ceil($note_sur_20 * 2) / 2;
|
$note_arrondie = ceil($note_sur_20 * 2) / 2;
|
||||||
@ -575,7 +579,7 @@ if ($stats['moyenne_generale'] !== null) {
|
|||||||
<div class="note-display-large">
|
<div class="note-display-large">
|
||||||
<div>
|
<div>
|
||||||
<div class="note-fraction">
|
<div class="note-fraction">
|
||||||
<?= number_format($questions_reussies, 1) ?>/<?= $eval['nb_questions'] ?> questions
|
<?= number_format($questions_reussies, 1) ?>/<?= number_format($eval['note_sur'], 0) ?> points
|
||||||
</div>
|
</div>
|
||||||
<div class="note-sur-20">
|
<div class="note-sur-20">
|
||||||
<?= number_format($note_arrondie, 1) ?>/20
|
<?= number_format($note_arrondie, 1) ?>/20
|
||||||
@ -654,13 +658,16 @@ if ($stats['moyenne_generale'] !== null) {
|
|||||||
|
|
||||||
<?php if ($statut === 'terminee'): ?>
|
<?php if ($statut === 'terminee'): ?>
|
||||||
<?php
|
<?php
|
||||||
// Récupérer le nombre de questions pour cette évaluation
|
// Utiliser note_sur si disponible, sinon calculer avec nb questions
|
||||||
$queryNbQ = "SELECT COUNT(*) as nb FROM questions WHERE id_evaluation = ?";
|
if (isset($eval['note_sur_obtenue']) && $eval['note_sur_obtenue'] > 0) {
|
||||||
$resultNbQ = $db->fetchOne($queryNbQ, [$eval['id_evaluation']]);
|
$note_sur_20 = ($eval['note_obtenue'] / $eval['note_sur_obtenue']) * 20;
|
||||||
$nb_q = $resultNbQ['nb'] ?? 1;
|
} else {
|
||||||
|
// Fallback : calculer avec nb questions
|
||||||
// Calculer la note sur 20
|
$queryNbQ = "SELECT COUNT(*) as nb FROM questions WHERE id_evaluation = ?";
|
||||||
$note_sur_20 = ($eval['note_obtenue'] / $nb_q) * 20;
|
$resultNbQ = $db->fetchOne($queryNbQ, [$eval['id_evaluation']]);
|
||||||
|
$nb_q = $resultNbQ['nb'] ?? 1;
|
||||||
|
$note_sur_20 = ($eval['note_obtenue'] / $nb_q) * 20;
|
||||||
|
}
|
||||||
$note_affichee = ceil($note_sur_20 * 2) / 2;
|
$note_affichee = ceil($note_sur_20 * 2) / 2;
|
||||||
?>
|
?>
|
||||||
<span class="note-display">
|
<span class="note-display">
|
||||||
@ -705,13 +712,11 @@ if ($stats['moyenne_generale'] !== null) {
|
|||||||
return `Eval ${index + 1}\n${date.getDate()}/${date.getMonth() + 1}`;
|
return `Eval ${index + 1}\n${date.getDate()}/${date.getMonth() + 1}`;
|
||||||
});
|
});
|
||||||
|
|
||||||
// Récupérer le nombre de questions pour chaque évaluation (via AJAX)
|
// Récupérer le nombre de questions pour chaque évaluation
|
||||||
// Pour simplifier, on utilise le pourcentage pour recalculer
|
// Utiliser note_sur (barème total) pour calculer la note sur 20
|
||||||
const notes = toutesEvaluations.map(e => {
|
const notes = toutesEvaluations.map(e => {
|
||||||
// note brute → note sur 20 via le pourcentage
|
// note / note_sur * 20
|
||||||
// pourcentage = (note / nb_questions) * 100
|
const note_sur_20 = (parseFloat(e.note) / parseFloat(e.note_sur)) * 20;
|
||||||
// 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
|
return Math.ceil(note_sur_20 * 2) / 2; // Arrondir demi-point sup
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user