| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- <?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>
|