Résultats"; // On va récupérer tous les rangs limited dispo triés par idChoix // Mysql $reqRL = $db->query('SELECT dataset.idChoix, dataset.annee, dataset.rangLimite FROM dataset;'); // pgSQL // $reqRL = $db->query('SELECT dataset."idChoix", dataset.annee, dataset."rangLimite" FROM dataset;'); $rangLimites = $reqRL->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_ASSOC); // 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 = $rangMoyen; // Calcul et affichage des données // Affichage de la 1ère ligne = Titre des colonnes $html .= ""; foreach ($specialityDatasetAbrev as $specialityName) { $html .= ""; } $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 .= ""; } $html .= ""; continue; } $html .= ""; 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 .= ""; } $html .= ""; } $html .= "
".$specialityName."
".$specialityName."
".$cityName." $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; } else if ($nbPossibleAnneePropose === 0 && $nbAnneePropose !== 0) { $html .= "0"; } $html .= "

"; // Affichage du tableau des légendes $html .= ""; foreach ($specialityDatasetAbrev as $speId => $speAbrev) { $html .= ""; } $html .= "
AbréviationNom de spécialité
".$speAbrev."".$specialityDataset[$speId]."
"; // Affichage du HTML demandé echo $html;