RangLimier
Cet outil permet, en entrant un classement (réel ou supposé), de voir les choix disponibles à ce classement.
Tableau de classement
Légende
| Légende (sur toutes les années) |
| Jamais proposé |
Aucun choix |
Une seule année |
Plusieurs choix |
Tous les choix |
Résultats";
// On va récupérer tous les rangs limited dispo triés par idChoix
$reqRL = $db->query("SELECT idChoix, annee, rangLimite FROM dataset");
$rangLimites = $reqRL->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_ASSOC);
// var_dump($rangLimites);
// Récupération des datasets
$specialityDatasetAbrev = getCsvToArrayKeyValue($_SETTINGS["datasetFolder"]."/liste_specialites_abrev.csv");
$specialityDataset = getCsvToArrayKeyValue($_SETTINGS["datasetFolder"]."/liste_specialites.csv");
$cityDataset = getCsvToArrayKeyValue($_SETTINGS["datasetFolder"]."/liste_villes.csv");
$inputClassement = (int) $_GET["classement"];
// Calcul et affichage des données
// Affichage de la 1ère ligne = Titre des colonnes
$html .= " | ";
foreach ($specialityDatasetAbrev as $specialityName) {
$html .= "".$specialityName." | ";
}
$html .= "
";
// Affichage de la suite du tableau avec le calcul
foreach ($cityDataset as $cityId => $cityName) {
// On gère la séparation des différentes régions entre elles (représentées dans le csv villes par les lignes XX_:XX)
// La notation des lignes de séparation est sous forme XX_x car si on laissait XX, la fonction getCsvToArrayKeyValue
// ne retourne la position que pour la 1ère occurence de XX;XX
// La manière de fix ça de manière la plus opti et sale, c'est de faire un substr et de tester les 2 premiers charactères
// si ils sont égaux à XX, on fait une séparation
// TODO : Faire un parseur csv qui prend en compte chaque ligne du csv dans l'ordre du fichier
if (strpos($cityId, "XX") !== FALSE) {
$html .= " | ";
foreach ($specialityDatasetAbrev as $specialityName) {
$html .= "".$specialityName." | ";
}
$html .= "";
continue;
}
$html .= "
|---|
| ".$cityName." | ";
foreach ($specialityDatasetAbrev AS $specialityId => $specialityName) {
$idChoice = "0".$cityId.$specialityId;
if (!isset($rangLimites[$idChoice])) {
$nbAnneePropose = 0;
$nbPossibleAnneePropose = 0;
} else {
$nbAnneePropose = count($rangLimites[$idChoice]);
$nbPossibleAnneePropose = 0;
foreach ($rangLimites[$idChoice] as $rangLimite) {
if ((int) $rangLimite["rangLimite"] >= $inputClassement) {$nbPossibleAnneePropose++;}
}
}
// Affichage de la cellule
$html .= " $nbPossibleAnneePropose && $nbPossibleAnneePropose === 1):
$html .= "last-choice";
break;
case ($nbAnneePropose > $nbPossibleAnneePropose && $nbPossibleAnneePropose !== 1):
$html .= "half-choices";
break;
case ($nbAnneePropose === $nbPossibleAnneePropose):
$html .= "all-choices";
break;
}
$html .= "\">";
if ($nbPossibleAnneePropose > 0) {
$html .= $nbPossibleAnneePropose;
}
$html .= " | ";
}
$html .= "
";
}
$html .= "
";
echo $html;
?>