security_check(); if ($resultat_session == 'c') { header("Location: ../utilisateurs/mon_compte.php?change_mdp=yes"); die(); } else if ($resultat_session == '0') { header("Location: ../logout.php?auto=1"); die(); } if (!checkAccess()) { header("Location: ../logout.php?auto=1"); die(); } //**************** EN-TETE ***************** $titre_page = "Outil d'initialisation de l'année : Importation des matières"; require_once("../lib/header.inc.php"); //************** FIN EN-TETE *************** ?>

RetourRetour accueil initialisation

Troisième phase d'initialisation
Importation des matières

\n"; if (!isset($_POST["action"])) { // // On sélectionne le fichier à importer // if(isset($_SESSION['init_csv_ligne_entete'])&&($_SESSION['init_csv_ligne_entete']=="no")) { $checked=""; } else { $checked=" checked"; } echo "

Vous allez effectuer la troisième étape : elle consiste à importer le fichier g_disciplines.csv contenant les données relatives aux disciplines.

\n"; echo "

Remarque : cette opération n'efface aucune donnée dans la base. Elle ne fait qu'une mise à jour, le cas échéant, de la liste des matières.

\n"; echo "

Les champs suivants doivent être présents, dans l'ordre, et séparés par un point-virgule :

\n"; echo "\n"; echo "

Veuillez préciser le nom complet du fichier g_disciplines.csv.

\n"; echo "
\n"; echo add_token_field(); echo "\n"; echo "

\n"; //echo "

Cocher si le fichier comporte une ligne d'entête.

\n"; echo "

 

\n"; echo "

\n"; echo "


\n"; echo "
\n"; } else { // // Quelque chose a été posté // if ($_POST['action'] == "save_data") { check_token(false); // // On enregistre les données dans la base. // Le fichier a déjà été affiché, et l'utilisateur est sûr de vouloir enregistrer // $sql="SELECT * FROM tempo2;"; $res_temp=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_temp)==0) { echo "

ERREUR : Aucune association élève/option n'a été trouvée ???

\n"; echo "


\n"; require("../lib/footer.inc.php"); die(); } echo "

On remplit la table 'matieres' : "; //$go = true; $i = 0; // Compteur d'erreurs $error = 0; // Compteur d'enregistrement $total = 0; $nb_matieres_existantes=0; //while ($go) { while ($lig=mysqli_fetch_object($res_temp)) { //$reg_nom_court = $_POST["ligne".$i."_nom_court"]; //$reg_nom_long = $_POST["ligne".$i."_nom_long"]; $reg_nom_court = $lig->col1; $reg_nom_long = $lig->col2; // On nettoie et on vérifie : $reg_nom_court = remplace_accents($reg_nom_court); $reg_nom_court = preg_replace("/[^A-Za-z0-9._\-]/","",trim(my_strtoupper($reg_nom_court))); if (mb_strlen($reg_nom_court) > 50) $reg_nom_court = mb_substr($reg_nom_court, 0, 50); $reg_nom_long=nettoyer_caracteres_nom($reg_nom_long, "an", " &'_-", ""); if (mb_strlen($reg_nom_long) > 200) $reg_nom_long = mb_substr($reg_nom_long, 0, 200); // Maintenant que tout est propre, on fait un test sur la table pour voir si la matière existe déjà ou pas $test = old_mysql_result(mysqli_query($GLOBALS["mysqli"], "SELECT count(matiere) FROM matieres WHERE matiere = '" . $reg_nom_court . "'"), 0); if ($test == 0) { // Test négatif : aucune matière avec ce nom court... on enregistre ! $insert = mysqli_query($GLOBALS["mysqli"], "INSERT INTO matieres SET " . "matiere = '" . $reg_nom_court . "', " . "nom_complet = '" . mysqli_real_escape_string($GLOBALS["mysqli"], $reg_nom_long) . "',priority='0',matiere_aid='n',matiere_atelier='n'"); //"nom_complet = '" . htmlspecialchars($reg_nom_long) . "'"); if (!$insert) { $error++; echo "".mysqli_error($GLOBALS["mysqli"]).'
'; } else { $total++; } } else { $nb_matieres_existantes++; } $i++; if (!isset($_POST['ligne'.$i.'_nom_court'])) $go = false; } //if ($error > 0) echo "

Il y a eu " . $error . " erreurs.

\n"; if ($error > 0){ if ($error == 1){ echo "

Il y a eu " . $error . " erreur.

\n"; } else{ echo "

Il y a eu " . $error . " erreurs.

\n"; } } //if ($total > 0) echo "

" . $total . " matières ont été enregistrées.

\n"; if ($total > 0){ if ($total == 1){ echo "

" . $total . " matière a été enregistrée.

\n"; } else{ echo "

" . $total . " matières ont été enregistrées.

\n"; } } if($nb_matieres_existantes>0) { if ($nb_matieres_existantes == 1){ echo "

" . $nb_matieres_existantes . " matière existait déjà.

\n"; } else{ echo "

" . $nb_matieres_existantes . " matières existaient déjà.

\n"; } } echo "

Revenir à la page précédente

\n"; } else if ($_POST['action'] == "upload_file") { check_token(false); // // Le fichier vient d'être envoyé et doit être traité // On va donc afficher le contenu du fichier tel qu'il va être enregistré dans Gepi // en proposant des champs de saisie pour modifier les données si on le souhaite // $csv_file = isset($_FILES["csv_file"]) ? $_FILES["csv_file"] : NULL; $ligne_entete=isset($_POST['ligne_entete']) ? $_POST['ligne_entete'] : 'no'; $_SESSION['init_csv_ligne_entete']=$ligne_entete; // On vérifie le nom du fichier... Ce n'est pas fondamentalement indispensable, mais // autant forcer l'utilisateur à être rigoureux if(my_strtolower($csv_file['name']) == "g_disciplines.csv") { // Le nom est ok. On ouvre le fichier $fp=fopen($csv_file['tmp_name'],"r"); if(!$fp) { // Aie : on n'arrive pas à ouvrir le fichier... Pas bon. echo "

Impossible d'ouvrir le fichier CSV !

\n"; echo "

Cliquer ici pour recommencer !

\n"; } else { // Fichier ouvert ! On attaque le traitement // On va stocker toutes les infos dans un tableau // Une ligne du CSV pour une entrée du tableau $data_tab = array(); //========================= if($ligne_entete=="yes"){ // On lit une ligne pour passer la ligne d'entête: $ligne = fgets($fp, 4096); echo "

A titre d'information, la ligne d'entête passée est la suivante :
$ligne
Si il ne s'agit pas d'une ligne d'entête, vous pouvez refaire cette étape.

"; } //========================= $k = 0; while (!feof($fp)) { $ligne = fgets($fp, 4096); if(trim($ligne)!="") { $tabligne=explode(";",$ligne); // 0 : Nom court de la matière // 1 : Nom long de la matière // On nettoie et on vérifie : $tabligne[0]=remplace_accents($tabligne[0]); $tabligne[0] = preg_replace("/[^A-Za-z0-9._\-]/","",trim(my_strtoupper($tabligne[0]))); if (mb_strlen($tabligne[0]) > 50) $tabligne[0] = mb_substr($tabligne[0], 0, 50); $tabligne[1]=nettoyer_caracteres_nom($tabligne[1], "an", " .&'_-", ""); $tabligne[1]=preg_replace("/'/"," ",$tabligne[1]); if (mb_strlen($tabligne[1]) > 200) $tabligne[1] = mb_substr($tabligne[1], 0, 200); $data_tab[$k] = array(); $data_tab[$k]["nom_court"] = $tabligne[0]; $data_tab[$k]["nom_long"] = $tabligne[1]; } $k++; } fclose($fp); // Fin de l'analyse du fichier. // Maintenant on va afficher tout ça. $sql="TRUNCATE TABLE tempo2;"; $vide_table = mysqli_query($GLOBALS["mysqli"], $sql); $nb_error=0; echo "
\n"; echo add_token_field(); echo "\n"; echo "\n"; echo "\n"; $alt=1; for ($i=0;$i<$k-1;$i++) { $alt=$alt*(-1); echo "\n"; echo "\n"; echo "\n"; echo "\n"; } echo "
Nom court (unique)Nom long
\n"; $sql="INSERT INTO tempo2 SET col1='".$data_tab[$i]["nom_court"]."', col2='".mysqli_real_escape_string($GLOBALS["mysqli"], $data_tab[$i]["nom_long"])."';"; $insert=mysqli_query($GLOBALS["mysqli"], $sql); if(!$insert) { echo ""; echo $data_tab[$i]["nom_court"]; echo ""; $nb_error++; } else { echo $data_tab[$i]["nom_court"]; } //echo "\n"; echo "\n"; echo $data_tab[$i]["nom_long"]; //echo "\n"; echo "
\n"; if($nb_error>0) { echo "

$nb_error erreur(s) détectée(s) lors de la préparation.

\n"; } echo "

\n"; echo "


\n"; echo "
\n"; } } else if (trim($csv_file['name'])=='') { echo "

Aucun fichier n'a été sélectionné !
\n"; echo "Cliquer ici pour recommencer !

\n"; } else { echo "

Le fichier sélectionné n'est pas valide !
\n"; echo "Cliquer ici pour recommencer !

\n"; } } } require("../lib/footer.inc.php"); ?>