apiDisplay.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?php
  2. $html .= "<h3>Résultats</h3>";
  3. // On va récupérer tous les rangs limited dispo triés par idChoix
  4. // Mysql
  5. $reqRL = $db->query('SELECT dataset.idChoix, dataset.annee, dataset.rangLimite FROM dataset;');
  6. // pgSQL
  7. // $reqRL = $db->query('SELECT dataset."idChoix", dataset.annee, dataset."rangLimite" FROM dataset;');
  8. $rangLimites = $reqRL->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_ASSOC);
  9. // Récupération des datasets
  10. $specialityDatasetAbrev = getCsvToArrayKeyValue($_SETTINGS["datasetFolder"]."/liste_specialites_abrev.csv");
  11. $specialityDataset = getCsvToArrayKeyValue($_SETTINGS["datasetFolder"]."/liste_specialites.csv");
  12. $cityDataset = getCsvToArrayKeyValue($_SETTINGS["datasetFolder"]."/liste_villes.csv");
  13. $inputClassement = $rangMoyen;
  14. // Calcul et affichage des données
  15. // Affichage de la 1ère ligne = Titre des colonnes
  16. $html .= "<table><thead><tr><th></th>";
  17. foreach ($specialityDatasetAbrev as $specialityName) {
  18. $html .= "<th scope='col'>".$specialityName."</th>";
  19. }
  20. $html .= "</tr></thead><tbody>";
  21. // Affichage de la suite du tableau avec le calcul
  22. foreach ($cityDataset as $cityId => $cityName) {
  23. // 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)
  24. // La notation des lignes de séparation est sous forme XX_x car si on laissait XX, la fonction getCsvToArrayKeyValue
  25. // ne retourne la position que pour la 1ère occurence de XX;XX
  26. // 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
  27. // si ils sont égaux à XX, on fait une séparation
  28. // TODO : Faire un parseur csv qui prend en compte chaque ligne du csv dans l'ordre du fichier
  29. if (strpos($cityId, "XX") !== FALSE) {
  30. $html .= "<tr><th></th>";
  31. foreach ($specialityDatasetAbrev as $specialityName) {
  32. $html .= "<th scope='col'>".$specialityName."</th>";
  33. }
  34. $html .= "</th>";
  35. continue;
  36. }
  37. $html .= "<tr><th scope='row'>".$cityName."</th>";
  38. foreach ($specialityDatasetAbrev AS $specialityId => $specialityName) {
  39. $idChoice = "0".$cityId.$specialityId;
  40. if (!isset($rangLimites[$idChoice])) {
  41. $nbAnneePropose = 0;
  42. $nbPossibleAnneePropose = 0;
  43. } else {
  44. $nbAnneePropose = count($rangLimites[$idChoice]);
  45. $nbPossibleAnneePropose = 0;
  46. foreach ($rangLimites[$idChoice] as $rangLimite) {
  47. if ((int) $rangLimite["rangLimite"] >= $inputClassement) {$nbPossibleAnneePropose++;}
  48. }
  49. }
  50. // Affichage de la cellule
  51. $html .= "<td class=\"";
  52. switch (TRUE) {
  53. case ($nbPossibleAnneePropose === 0 && $nbAnneePropose === 0):
  54. $html .= "never-available";
  55. break;
  56. case ($nbPossibleAnneePropose === 0):
  57. $html .= "no-choice";
  58. break;
  59. case ($nbAnneePropose > $nbPossibleAnneePropose && $nbPossibleAnneePropose === 1):
  60. $html .= "last-choice";
  61. break;
  62. case ($nbAnneePropose > $nbPossibleAnneePropose && $nbPossibleAnneePropose !== 1):
  63. $html .= "half-choices";
  64. break;
  65. case ($nbAnneePropose === $nbPossibleAnneePropose):
  66. $html .= "all-choices";
  67. break;
  68. }
  69. $html .= "\">";
  70. if ($nbPossibleAnneePropose > 0) {
  71. $html .= $nbPossibleAnneePropose;
  72. } else if ($nbPossibleAnneePropose === 0 && $nbAnneePropose !== 0) {
  73. $html .= "0";
  74. }
  75. $html .= "</td>";
  76. }
  77. $html .= "</tr>";
  78. }
  79. $html .= "</tbody></table><br>";
  80. // Affichage du tableau des légendes
  81. $html .= "<table><thead><th scope='col'>Abréviation</th><th scope='col'>Nom de spécialité</th></thead>";
  82. foreach ($specialityDatasetAbrev as $speId => $speAbrev) {
  83. $html .= "<tr><td>".$speAbrev."</td><td>".$specialityDataset[$speId]."</td></tr>";
  84. }
  85. $html .= "</table></body>";
  86. // Affichage du HTML demandé
  87. echo $html;