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(); } include("../lib/initialisation_annee.inc.php"); $liste_tables_del = $liste_tables_del_etape_resp; //**************** EN-TETE ***************** $titre_page = "Outil d'initialisation de l'année : Importation des élèves - Etape 1"; require_once("../lib/header.inc.php"); //************** FIN EN-TETE *************** $en_tete=isset($_POST['en_tete']) ? $_POST['en_tete'] : "no"; //debug_var(); // Passer à 'y' pour afficher les requêtes $debug_resp='n'; ?>
Vous allez effectuer la deuxième étape : elle consiste à importer le fichier g_responsables.csv contenant les données élèves.
\n"; echo "Les champs suivants doivent être présents, dans l'ordre, et séparés par un point-virgule :
\n"; echo "Veuillez préciser le nom complet du fichier g_responsables.csv.
\n"; echo "\n"; $sql="SELECT 1=1 FROM utilisateurs WHERE statut='responsable';"; if($debug_resp=='y') {echo "$sqlIl existe un ou des comptes responsables de l'année passée, et vous n'avez pas mis ces comptes en réserve pour imposer le même login/mot de passe cette année.
Est-ce bien un choix délibéré ou un oubli de votre part?
Pour conserver ces login/mot de de passe de façon à ne pas devoir re-distribuer ces informations (et éviter de perturber ces utilisateurs), vous pouvez procéder à la mise en réserve avant d'initialiser l'année dans la page Changement d'année (vous y trouverez aussi la possibilité de conserver les comptes élèves (s'ils n'ont pas déjà été supprimés) et bien d'autres actions à ne pas oublier avant l'initialisation).
NOTE: Les champs marqués d'un (*) doivent être non vides.
\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 // // Première étape : on vide les tables echo "On vide d'abord les tables suivantes : ";
$j=0;
$k=0;
while ($j < count($liste_tables_del)) {
$sql="SHOW TABLES LIKE '".$liste_tables_del[$j]."';";
//echo "$sql
";
$test = sql_query1($sql);
if ($test != -1) {
if($k>0) {echo ", ";}
$sql="SELECT 1=1 FROM $liste_tables_del[$j];";
$res_test_tab=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_test_tab)>0) {
$sql="DELETE FROM $liste_tables_del[$j];";
$del = @mysqli_query($GLOBALS["mysqli"], $sql);
echo "".$liste_tables_del[$j]."";
echo " (".mysqli_num_rows($res_test_tab).")";
}
else {
echo $liste_tables_del[$j];
}
$k++;
}
$j++;
}
// Ménage infos_actions:
$sql="SELECT * FROM infos_actions WHERE titre LIKE 'Nouveau responsable%';";
//echo "$sql
";
$test = mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($test)>0) {
echo "
";
echo "Suppression d'anciens messages en page d'accueil invitant à créer de nouveaux comptes responsables.";
$sql="DELETE FROM infos_actions WHERE titre LIKE 'Nouveau responsable%';";
$del = mysqli_query($GLOBALS["mysqli"], $sql);
}
// Suppression des comptes de responsables:
echo "
\n";
echo "
On supprime les anciens comptes responsables... "; $sql="DELETE FROM utilisateurs WHERE statut='responsable';"; $del=mysqli_query($GLOBALS["mysqli"], $sql); $sql="SELECT * FROM temp_responsables;"; $res_temp=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_temp)==0) { echo "
ERREUR : Aucun responsable n'a été trouvé ???
\n"; echo "On remplit la table 'responsables' : "; $i = 0; // Compteur d'erreurs $error = 0; $temoin_ele_manquant=0; // Compteur d'enregistrement $total = 0; while ($lig=mysqli_fetch_object($res_temp)) { $reg_id_eleve = $lig->elenoet; $reg_nom = $lig->nom; $reg_prenom = $lig->prenom; $reg_civilite = $lig->civilite; $reg_adresse1 = $lig->adresse1; $reg_adresse2 = $lig->adresse2; $reg_code_postal = $lig->code_postal; $reg_commune = $lig->commune; // On nettoie et on vérifie : $reg_id_eleve = preg_replace("/[^0-9]/","",trim($reg_id_eleve)); $reg_nom=my_strtoupper(nettoyer_caracteres_nom($reg_nom, "a", " '_-","")); if (mb_strlen($reg_nom) > 50) $reg_nom = mb_substr($reg_nom, 0, 50); $reg_prenom=nettoyer_caracteres_nom($reg_prenom, "a", " '_-",""); if (mb_strlen($reg_prenom) > 50) $reg_prenom = mb_substr($reg_prenom, 0, 50); if ($reg_civilite != "M." AND $reg_civilite != "MME" AND $reg_civilite != "MLLE") { $reg_civilite = "";} $reg_adresse1=preg_replace("/'/",' ',$reg_adresse1); $reg_adresse1=nettoyer_caracteres_nom($reg_adresse1, "an", " ,'_-",""); if (mb_strlen($reg_adresse1) > 50) $reg_adresse1 = mb_substr($reg_adresse1, 0, 50); $reg_adresse2=preg_replace("/'/",' ',$reg_adresse2); $reg_adresse2=nettoyer_caracteres_nom($reg_adresse2, "an", " ,'_-",""); if (mb_strlen($reg_adresse2) > 50) $reg_adresse2 = mb_substr($reg_adresse2, 0, 50); $reg_code_postal = preg_replace("/[^0-9]/","",trim($reg_code_postal)); if (mb_strlen($reg_code_postal) > 6) $reg_code_postal = mb_substr($reg_code_postal, 0, 6); $reg_commune=preg_replace("/'/",' ',$reg_commune); $reg_commune=nettoyer_caracteres_nom($reg_commune, "an", " ,'_-",""); if (mb_strlen($reg_commune) > 50) $reg_commune = mb_substr($reg_commune, 0, 50); // On vérifie que l'élève existe $test = old_mysql_result(mysqli_query($GLOBALS["mysqli"], "SELECT count(login) FROM eleves WHERE elenoet = '" . $reg_id_eleve . "'"), 0); if($reg_id_eleve==""){ echo "
Erreur : L'identifiant élève est vide pour $reg_prenom $reg_nom
\n"; } else{ if($reg_nom==""){ echo "Erreur : Le nom du responsable est vide pour l'élève $reg_id_eleve
\n"; } else{ if ($test == 0 OR !$test) { // Test négatif : aucun élève avec cet ID... On envoie un message d'erreur. echo "Erreur : l'élève avec l'identifiant interne " . $reg_id_eleve . " n'existe pas dans Gepi.
\n"; $error++; $temoin_ele_manquant++; } else { // Test positif : on peut donc enregistrer les données de responsable. // On regarde si une entrée existe déjà pour l'élève en question $test = mysqli_query($GLOBALS["mysqli"], "SELECT ereno, nom1, nom2 FROM responsables WHERE ereno = '" . $reg_id_eleve . "'"); $insert = null; if (mysqli_num_rows($test) == 0) { // Aucune entrée n'existe. On enregistre le responsable comme premier responsable $sql="INSERT INTO responsables SET " . "ereno = '" . $reg_id_eleve . "', " . "nom1 = '" . mysqli_real_escape_string($GLOBALS["mysqli"], $reg_nom) . "', " . "prenom1 = '" . mysqli_real_escape_string($GLOBALS["mysqli"], $reg_prenom) . "', " . "adr1 = '" . mysqli_real_escape_string($GLOBALS["mysqli"], $reg_adresse1) . "', " . "adr1_comp = '" . mysqli_real_escape_string($GLOBALS["mysqli"], $reg_adresse2) . "', " . "commune1 = '" . mysqli_real_escape_string($GLOBALS["mysqli"], $reg_commune) . "', " . "cp1 = '" . $reg_code_postal . "'"; $insert = mysqli_query($GLOBALS["mysqli"], $sql); } else { // Une entrée existe // On regarde si le responsable 1 a déjà été saisi if (old_mysql_result($test, 0, "nom1") == "") { $sql="UPDATE responsables SET " . "nom1 = '" . mysqli_real_escape_string($GLOBALS["mysqli"], $reg_nom) . "', " . "prenom1 = '" . mysqli_real_escape_string($GLOBALS["mysqli"], $reg_prenom) . "', " . "adr1 = '" . mysqli_real_escape_string($GLOBALS["mysqli"], $reg_adresse1) . "', " . "adr1_comp = '" . mysqli_real_escape_string($GLOBALS["mysqli"], $reg_adresse2) . "', " . "commune1 = '" . mysqli_real_escape_string($GLOBALS["mysqli"], $reg_commune) . "', " . "cp1 = '" . $reg_code_postal . "' " . "WHERE " . "ereno = '" . $reg_id_eleve . "'"; $insert = mysqli_query($GLOBALS["mysqli"], $sql); } else if (old_mysql_result($test, 0, "nom2") == "") { $sql="UPDATE responsables SET " . "nom2 = '" . mysqli_real_escape_string($GLOBALS["mysqli"], $reg_nom) . "', " . "prenom2 = '" . mysqli_real_escape_string($GLOBALS["mysqli"], $reg_prenom) . "', " . "adr2 = '" . mysqli_real_escape_string($GLOBALS["mysqli"], $reg_adresse1) . "', " . "adr2_comp = '" . mysqli_real_escape_string($GLOBALS["mysqli"], $reg_adresse2) . "', " . "commune2 = '" . mysqli_real_escape_string($GLOBALS["mysqli"], $reg_commune) . "', " . "cp2 = '" . $reg_code_postal . "' " . "WHERE " . "ereno = '" . $reg_id_eleve . "'"; $insert = mysqli_query($GLOBALS["mysqli"], $sql); } else { // Erreur ! Les deux responsables ont déjà été saisis... echo "Erreur pour " . $reg_prenom . " " . $reg_nom . " ! Les deux responsables ont déjà été saisis.
\n"; } } if ($insert == false) { $error++; $erreur_mysql=mysqli_error($GLOBALS["mysqli"]); if($erreur_mysql!=""){echo "".$erreur_mysql."
\n";} //echo "$sql
\n"; } else { $total++; } } } } $i++; } if ($error > 0) {echo "Il y a eu " . $error . " erreurs.
\n";} if($temoin_ele_manquant>0) { echo "Un ou des élèves manquants ont été signalés.
Il se peut qu'il s'agisse d'élèves sans numéro national (INE) signalés à l'étape 1 et non enregistrés pour cette raison.
" . $total . " responsables ont été enregistrés.
\n";} echo "\n"; // On sauvegarde le témoin du fait qu'il va falloir convertir pour remplir les nouvelles tables responsables: saveSetting("conv_new_resp_table", 0); } 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 // if(isset($en_tete)) { $_SESSION['init_csv_ligne_entete']=$en_tete; } $csv_file = isset($_FILES["csv_file"]) ? $_FILES["csv_file"] : NULL; // 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_responsables.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(); //========================= // On lit une ligne pour passer la ligne d'entête: if($en_tete=="yes") { $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.
"; print_r($data_tab[$k]); echo ""; */ $k++; } } fclose($fp); // Fin de l'analyse du fichier. // Maintenant on va afficher tout ça. $sql="CREATE TABLE IF NOT EXISTS temp_responsables ( id int(11) NOT NULL auto_increment, elenoet varchar(50) NOT NULL default '', nom varchar(50) NOT NULL default '', prenom varchar(50) NOT NULL default '', civilite varchar(50) NOT NULL default '', adresse1 varchar(100) NOT NULL default '', adresse2 varchar(100) NOT NULL default '', code_postal varchar(6) NOT NULL default '', commune varchar(50) NOT NULL default '', PRIMARY KEY (id) );"; $create_table = mysqli_query($GLOBALS["mysqli"], $sql); $sql="TRUNCATE TABLE temp_responsables;"; $vide_table = mysqli_query($GLOBALS["mysqli"], $sql); /* echo "\$data_tab
"; print_r($data_tab); echo ""; */ $nb_error=0; echo "\n"; } } else if (trim($csv_file['name'])=='') { echo "
Aucun fichier n'a été sélectionné !
\n";
echo "Cliquer ici pour recommencer !
Le fichier sélectionné n'est pas valide !
\n";
echo "Cliquer ici pour recommencer !