|
|
@@ -0,0 +1,95 @@
|
|
|
+<?php
|
|
|
+require_once "libs/fnMain.php";
|
|
|
+
|
|
|
+/**************************
|
|
|
+ * VALIDATION DES DONNEES
|
|
|
+ **************************/
|
|
|
+$isNoteValid = isset($_GET["note"]) && (float) $_GET["note"] !== 0;
|
|
|
+$isAnneeValid = isset($_GET["annee"]) && (int) $_GET["annee"] !== 0;
|
|
|
+
|
|
|
+/**************************
|
|
|
+ * Affichage du formulaire
|
|
|
+ **************************/
|
|
|
+?>
|
|
|
+<!doctype html>
|
|
|
+<html lang="fr">
|
|
|
+<head>
|
|
|
+ <meta charset="UTF-8">
|
|
|
+ <meta name="viewport"
|
|
|
+ content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
|
|
|
+ <meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
|
+ <title>RangLimier - Notes et rang</title>
|
|
|
+ <link rel="stylesheet" href="assets/bootstrap.min.css">
|
|
|
+ <link rel="stylesheet" href="assets/divers.css">
|
|
|
+</head>
|
|
|
+<body>
|
|
|
+<h1>RangLimier - Rang selon note d'un ECN</h1>
|
|
|
+<p>Cet outil permet, en entrant une note et une année d'ECN, de voir le rang le plus proche associé.<br>
|
|
|
+<i>Attention : Cet outil est à but purement indicatif !</i>
|
|
|
+</p>
|
|
|
+<form action="indexRangSelonNote.php" method="get">
|
|
|
+ <label for="annee">Veuillez entrer l'année de l'ECN dont vous cherchez le rang d'une note : </label> <br>
|
|
|
+ <input type="text" name="annee" <?= ($isAnneeValid === TRUE) ? 'value='.(int) $_GET["annee"] : "" ?>>
|
|
|
+ <br><br>
|
|
|
+ <label for="note">Veuillez entrer la note dont vous cherchez le rang <em>(avec un point au lieu d'une virgule)</em> : </label> <br>
|
|
|
+ <input type="text" name="note" <?= ($isNoteValid === TRUE) ? 'value='.(float) $_GET["note"] : "" ?>>
|
|
|
+
|
|
|
+ <button type="submit" class="btn btn-info">Envoyer</button>
|
|
|
+</form>
|
|
|
+<?php if ($isNoteValid && $isAnneeValid) {
|
|
|
+ $rangText = "";
|
|
|
+ $rangMoyen = 0; // Variable donnant le rang utilisé pour calculer le tableau des choix, et servant aussi au classement affiché
|
|
|
+
|
|
|
+ $sqlLimiteBasse = "SELECT * FROM notes_rang
|
|
|
+ WHERE annee = :annee AND note >= :note
|
|
|
+ ORDER BY classement DESC
|
|
|
+ LIMIT 1";
|
|
|
+ $sqlLimiteHaute = "SELECT * FROM notes_rang
|
|
|
+ WHERE annee = :annee AND note <= :note
|
|
|
+ ORDER BY classement
|
|
|
+ LIMIT 1";
|
|
|
+
|
|
|
+ $reqLimBasse = $db->prepare($sqlLimiteBasse);
|
|
|
+ $reqLimBasse->execute([
|
|
|
+ "annee" => $_GET["annee"],
|
|
|
+ "note" => $_GET["note"]
|
|
|
+ ]);
|
|
|
+
|
|
|
+ if ($reqLimBasse->rowCount() === 0) {
|
|
|
+ // Pas de note au dessus de la note entrée => Forcément 1er
|
|
|
+ $rangText = "Au dessus du 1er";
|
|
|
+ $rangMoyen = 1;
|
|
|
+ } else {
|
|
|
+ $reqLimiteHaute = $db->prepare($sqlLimiteHaute);
|
|
|
+ $reqLimiteHaute->execute([
|
|
|
+ "annee" => $_GET["annee"],
|
|
|
+ "note" => $_GET["note"]
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $rangBasArray = $reqLimBasse->fetch(PDO::FETCH_ASSOC);
|
|
|
+ if ($reqLimiteHaute->rowCount() === 0) {
|
|
|
+ // Pas de note en dessous => Forcément dernier
|
|
|
+ $rangMoyen = $rangBasArray["classement"] + 10;
|
|
|
+ $rangText = "Estimé environ à ".((int) $rangMoyen);
|
|
|
+ } else {
|
|
|
+ // Note entre 2 classements connus de la DB
|
|
|
+ $rangHautArray = $reqLimiteHaute->fetch(PDO::FETCH_ASSOC);
|
|
|
+
|
|
|
+ // Ligne non utilisée car révèle les points utilisés (entre xxx et yyy) sont connus
|
|
|
+ // $rangText = "Entre ".$rangBasArray["classement"]." et ".$rangHautArray["classement"];
|
|
|
+
|
|
|
+ $rangMoyen = ((int) $rangBasArray["classement"] + (int) $rangHautArray["classement"]) / 2;
|
|
|
+ $rangText = "Estimé environ à ".$rangMoyen;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ echo "<hr><p>Rang de la note pour l'ECN ".htmlentities($_GET["annee"])." : <strong>".htmlentities($rangText)."</strong></p>";
|
|
|
+
|
|
|
+ // Partie redirigeant vers le tableau
|
|
|
+ echo "<a href='index.php?classement=".$rangMoyen."'>Accéder au tableau de choix disponibles pour ce classement</a>";
|
|
|
+}
|
|
|
+?>
|
|
|
+
|
|
|
+
|
|
|
+</body>
|
|
|
+</html>
|