_importData.php_ 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. require_once "libs/fnMain.php";
  3. $_SETTINGS = require "libs/_settings.php";
  4. if (isset($_POST["csv"], $_POST["annee"])) {
  5. // On récupère les datasets de villes/spé disponibles
  6. $cityDataset = getCsvToArrayKeyValue($_SETTINGS["datasetFolder"]."/liste_villes_abrev.csv");
  7. $specialityDataset = getCsvToArrayKeyValue($_SETTINGS["datasetFolder"]."/liste_specialites_abrev.csv");
  8. // On inverse les dataset (passage de key => valeur à valeur => key)
  9. // vu que dans mes csv, tout est enregistré selon les abréviations
  10. $cityDatasetFlipped = array_flip($cityDataset);
  11. $specialityDatasetFlipped = array_flip($specialityDataset);
  12. // On parse le fichier CSV reçu
  13. $tempCsvByRow = explode("\n", $_POST["csv"]);
  14. array_shift($tempCsvByRow); // Enlève la 1ère ligne listant les colonnes
  15. $csvArray = [];
  16. foreach ($tempCsvByRow as $row) {
  17. $csvArray[] = str_getcsv($row, ";");
  18. }
  19. // On enregistre les data dans la BDD
  20. $sql = "INSERT INTO dataset(idChoix, annee, rangLimite) VALUE (:idChoix, :annee, :rangLimite)";
  21. $reqInsertRangLimites = $db->prepare($sql);
  22. foreach ($csvArray as $item) {
  23. $reqInsertRangLimites->execute([
  24. "idChoix" => "0".$cityDatasetFlipped[$item[0]].$specialityDatasetFlipped[$item[1]],
  25. "annee" => (int) $_POST["annee"],
  26. "rangLimite" => ((int) $item[5] === 0) ? $item[3] : 99999
  27. ]);
  28. }
  29. echo "Valeurs enregistrées";
  30. } else {
  31. // Affichage du formulaire d'import
  32. ?>
  33. <!doctype html>
  34. <html lang="fr">
  35. <head>
  36. <meta charset="UTF-8">
  37. <meta name="viewport"
  38. content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  39. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  40. <title>IMPORT DATA</title>
  41. <link rel="stylesheet" href="assets/bootstrap.min.css">
  42. <link rel="stylesheet" href="assets/divers.css">
  43. </head>
  44. <body>
  45. <h1>RangLimier - Import Data</h1>
  46. <p>Importation des données en CSV en DB.</p>
  47. <form action="importData.php" method="post">
  48. <label for="annee">Année de l'ECN : </label> <br>
  49. <input type="text" name="annee"> <br>
  50. <label for="csv">Ajouter le CSV ici (sous la forme "ville;specialite;rang1erChoisi;rangDernierChoisi;nbPropose_;dispoALaFin") </label> <br>
  51. <textarea name="csv"></textarea> <br>
  52. <button type="submit" class="btn btn-info">Envoyer</button>
  53. </form>
  54. </body>
  55. </html>
  56. <?php }