Choix du fichier


Pour plus de sécurité avant de lancer l'import faire une sauvegarde de la base de pmb

Le fichier doit être au format cvs en ISO-8859-15 avec , comme séparateur de champ et le texte entre guillemets (ex : \"Nom\")
Fichier etudiant : \"MatriculeHenam\",\"Code_barres\",\"Nom\",\"Prenom\",\"Adresse\",\"Code_postal\",\"Ville\",\"Pays\",\"Telephone_1\",\"Telephone_2\",\"Email\",\"Sexe\",\"Date_naissance\",\"Email_perso\",\"Localisation\",\"Groupe_1\",\"Groupe_2\",\"Login\"
Fichier professeur : \"MatriculeHenam\",\"Code_barres\",\"Nom\",\"Prenom\",\"Adresse\",\"Code_postal\",\"Ville\",\"Pays\",\"Telephone_1\",\"Telephone_2\",\"Email\",\"Sexe\",\"Date_naissance\",\"Login\"
Si la première ligne du fichier comporte les entêtes des colonnes il faut que la première ligne, première colonne soit 'MatriculeHenam'
Les statuts de lecteur \"A supprimer\" et \"Importé\" ne doivent pas avoir été supprimés.
Les codages d'import des localisations ne doivent pas être modifiés
Le controle des lecteurs se fait sur le matricule et le code barres
Si l'on choisi de supprimer les lecteurs présents dans le fichier et qu'ils ont des prêts en cours seul leur statut sera mis à \"A supprimer\"

Type d'utilisation

Choisisez si vous voulez faire un import ou une suppression de lecteurs :
(ajoute ou modifie les lecteurs présents dans le fichier)
(supprime les lecteurs présents dans le fichier et dans la base s'ils n'ont pas de prêt en cours)

Choisisez si vous voulez remettre tous les statuts des lecteurs à \"Importé\" (actualisation annuelle) :

"; } function import_lect_par_lect($tab,$dbh){ global $lect_cree,$lect_erreur; //update empr set `empr_modif`= DATE_SUB(empr_modif, INTERVAL 6 MONTH),`empr_date_expiration`= DATE_SUB(`empr_date_expiration`, INTERVAL 6 MONTH) $data=array(); if(count($tab) == 18){ //Si on a 16 champs c'est un etudiant $data['categ_libelle_create']="Etudiants HENAM"; }else{ //Sinon c'est un prof $data['categ_libelle_create']="Professeurs HENAM"; } $data['codestat_libelle_create']="-"; $data['date_creation']=date('Y-m-j'); $data['date_adhesion']=date('Y-m-j'); $data['date_modif']=date('Y-m-j'); if (($result = pmb_mysql_query("SELECT DATE_ADD('".addslashes(date('Y-m-j'))."', INTERVAL 1 YEAR)"))) { if (($row = pmb_mysql_fetch_row($result))) { $data['date_expiration']= $row[0]; } } $empr_cb =$tab[1]; if(!$empr_cb)$empr_cb="ind"; $pb = 1 ; $num_cb=1 ; $empr_cb2=$empr_cb; while ($pb==1) { $q = "SELECT empr_cb FROM empr WHERE empr_cb='".addslashes($empr_cb2)."' LIMIT 1 "; $r = pmb_mysql_query($q, $dbh); $nb = pmb_mysql_num_rows($r); if ($nb) { $empr_cb2 =$empr_cb."-".$num_cb ; $num_cb++; } else $pb = 0 ; } $data['cb']=$empr_cb2; /*if($data['cb'] != $tab[1]){ $lect_erreur++; echo "Erreur : pour le lecteur ".$tab[2]." ".$tab[3]." le code barres ".$data['cb']." est déja utilisé comme code barre pour un autre lecteur
"; return; }*/ $data['nom']=$tab[2]; $data['prenom']=$tab[3]; if($tab[11] == "F"){ $data['sexe']=2; }elseif($tab[11] == "M"){ $data['sexe']=1; }else{ $data['sexe']=0; } $data['adr1']=$tab[4]; $data['adr2']=""; $data['ville']=ucfirst(mb_strtolower($tab[6])); $data['pays']=$tab[7]; $data['cp']=$tab[5];; $data['mail']=$tab[10]; $data['tel1']=$tab[8]; $data['tel2']=$tab[9]; $data['prof']=""; $date=explode("/",$tab[12]); $data['year']=$date[2]; if(count($tab) == 18){ //Si on a 18 champs c'est un etudiant $data['login'] = $tab[17]; }else{ //Sinon c'est un prof $data['login'] = $tab[13]; } $data['password']=$tab[1]; $data['location_libelle_create']=$tab[14]; if(!$data['location_libelle_create']){ $data['location_libelle_create']="Indéterminé"; } $data['msg']=""; $data['lang']='fr_FR'; $data['statut_libelle_create']="Importé"; $mon_emprunteur= new emprunteur(); $id_empr=$mon_emprunteur->import($data); if(!$id_empr){ $lect_erreur++; echo "Erreur : Lecteur non créé\n"; echo "
";
		print_r($data);
		echo "
"; }else{ $lect_cree++; if ($tab[13] and count($tab) == 18) { $q="select idchamp from empr_custom where name='email_perso' limit 1"; $r = pmb_mysql_query($q, $dbh); if (pmb_mysql_num_rows($r)) { $idchamp=pmb_mysql_result($r,0,0); $q = "insert into empr_custom_values (empr_custom_champ, empr_custom_origine, empr_custom_small_text) "; $q.= "values('".$idchamp."', '".$id_empr."','".addslashes($tab[13])."' ) "; $r=pmb_mysql_query($q, $dbh); } } if ($tab[0]) { $q="select idchamp from empr_custom where name='matricule' limit 1"; $r = pmb_mysql_query($q, $dbh); if (pmb_mysql_num_rows($r)) { $idchamp=pmb_mysql_result($r,0,0); $q = "insert into empr_custom_values (empr_custom_champ, empr_custom_origine, empr_custom_small_text) "; $q.= "values('".$idchamp."', '".$id_empr."','".addslashes($tab[0])."' ) "; $r=pmb_mysql_query($q, $dbh); } } if(trim($tab[15])){ //On créer le groupe si il n'existe pas et on y affecte le lecteur $requete="select id_groupe from groupe where libelle_groupe='".addslashes(trim($tab[15]))."'"; $r = pmb_mysql_query($requete, $dbh); if (pmb_mysql_num_rows($r)) { $id_grp=pmb_mysql_result($r,0,0); }else{ $q= "insert into groupe (libelle_groupe) values ('".addslashes(trim($tab[15]))."') "; $r = pmb_mysql_query($q, $dbh); $id_grp =pmb_mysql_insert_id($dbh); } $requete="insert into empr_groupe(empr_id,groupe_id) values ('".$id_empr."','".$id_grp."')"; if(!pmb_mysql_query($requete)) echo "Requete echoué : ".$requete."
"; } if(trim($tab[16]) and trim($tab[16]) != trim($tab[15])){ //On créer le groupe si il n'existe pas et on y affecte le lecteur $requete="select id_groupe from groupe where libelle_groupe='".addslashes(trim($tab[16]))."'"; $r = pmb_mysql_query($requete, $dbh); if (pmb_mysql_num_rows($r)) { $id_grp=pmb_mysql_result($r,0,0); }else{ $q= "insert into groupe (libelle_groupe) values ('".addslashes(trim($tab[16]))."') "; $r = pmb_mysql_query($q, $dbh); $id_grp =pmb_mysql_insert_id($dbh); } $requete="insert into empr_groupe(empr_id,groupe_id) values ('".$id_empr."','".$id_grp."')"; if(!pmb_mysql_query($requete)) echo "Requete echoué : ".$requete."
"; } } } function supp_lect_par_lect($tab,$dbh){ global $lect_erreur,$lect_supprime,$lect_interdit; $requete="select id_empr,pret_idexpl from empr left join pret on id_empr=pret_idempr join empr_custom_values on empr_custom_origine=id_empr where empr_cb like '".addslashes($tab[1])."%' and empr_custom_champ='2' and empr_custom_small_text='".addslashes($tab[0])."' group by id_empr"; $select = pmb_mysql_query($requete,$dbh); $nb_enreg = pmb_mysql_num_rows($select); if($nb_enreg == 1){ $id=pmb_mysql_result($select,0,0); if(!pmb_mysql_result($select,0,1)){ //Si il n'a pas de pret en cours emprunteur::del_empr($id); $lect_supprime++; }else{ //On modifi le statut $q="select idstatut from empr_statut where statut_libelle='A supprimer' limit 1"; $r = pmb_mysql_query($q, $dbh); if (pmb_mysql_num_rows($r)) { $id_statut =pmb_mysql_result($r,0,0); } else { $q= "insert into empr_statut (statut_libelle) values ('A supprimer') "; $r = pmb_mysql_query($q, $dbh); $id_statut =pmb_mysql_insert_id($dbh); } $requete="update empr set empr_statut='".$id_statut."' where id_empr='".$id."' "; if(pmb_mysql_query($requete)){ $lect_interdit++; }else{ $lect_erreur++; echo "Erreur : Pour le lecteur ".$tab[2]." ".$tab[3]." avec le code barre ".$tab[1]." un problème est survenu lors de la modification de son statut
"; } } }elseif($nb_enreg > 1){ $lect_erreur++; echo "Erreur : Attention le code barre ".$tab[1]." est en double dans la base veuillez le modifier pour l'un des deux lecteurs
"; return; }else{ $lect_erreur++; echo "Erreur : Attention le lecteur ".$tab[2]." ".$tab[3]." avec le code barre ".$tab[1]." n'existe pas dans la base, il ne sera pas supprimé
"; return; } } function maj_lect_par_lect($tab,$dbh,$statut,$id_lect){ global $lect_modif,$lect_erreur; /*Les informations qui sont mise à jour sont : * l'adresse, le code postal, la ville, le pays, le telephone, emailPerso, la locatisation et le groupe */ $requete = "update empr set "; $requete .= "empr_cp='".addslashes($tab[5])."'"; $requete .= ", empr_ville='".addslashes(ucfirst(mb_strtolower($tab[6])))."'"; $requete .= ", empr_adr1='".addslashes($tab[4])."'"; $requete .= ", empr_pays='".addslashes($tab[7])."'"; $requete .= ", empr_tel1='".addslashes($tab[8])."'"; $requete .= ", empr_tel2='".addslashes($tab[9])."'"; $requete .= ", empr_mail='".addslashes($tab[10])."'"; if(count($tab) == 18){ //Si on a 18 champs c'est un etudiant $requete .= ", empr_login='".addslashes($tab[17])."'"; }else{ //Sinon c'est un prof $requete .= ", empr_login='".addslashes($tab[13])."'"; } if($tab[14]){ $data2=array(); $data2['location_libelle'] = $tab[14]; $data2['locdoc_codage_import'] = $tab[14]; $data2['locdoc_owner'] = 0; $localisation = docs_location::import($data2); $requete .= ", empr_location='".$localisation."'"; } if($statut){ //On repasse le statut de tous les lecteurs à "Indétermiè" et on remet les dates $requete .= ", empr_date_adhesion='".addslashes(date('Y-m-j'))."'"; $requete .= ", empr_modif='".addslashes(date('Y-m-j'))."'"; if (($result = pmb_mysql_query("SELECT DATE_ADD('".addslashes(date('Y-m-j'))."', INTERVAL 1 YEAR)"))) { if (($row = pmb_mysql_fetch_row($result))) { $requete .= ", empr_date_expiration='".addslashes($row[0])."'"; } } $q="select idstatut from empr_statut where statut_libelle='Importé' limit 1"; $r = pmb_mysql_query($q, $dbh); if (pmb_mysql_num_rows($r)) { $requete .= ", empr_statut='".pmb_mysql_result($r,0,0)."'"; } else { $q= "insert into empr_statut (statut_libelle) values ('Importé') "; $r = pmb_mysql_query($q, $dbh); $requete .= ", empr_statut='".pmb_mysql_insert_id($dbh)."'"; } }else{ $requete .= ", empr_modif='".addslashes(date('Y-m-j'))."'"; } $requete .= " where id_empr='".$id_lect."'"; if(pmb_mysql_query($requete)){ $lect_modif++; }else{ $lect_erreur++; echo "Requete echoué : ".$requete."
"; } //Traitement des groupes $requete="delete from empr_groupe where empr_id='".$id_lect."'"; if(!pmb_mysql_query($requete)) echo "Requete echoué : ".$requete."
"; if(trim($tab[15])){ //On créer le groupe si il n'existe pas et on y affecte le lecteur $requete="select id_groupe from groupe where libelle_groupe='".addslashes(trim($tab[15]))."'"; $r = pmb_mysql_query($requete, $dbh); if (pmb_mysql_num_rows($r)) { $id_grp=pmb_mysql_result($r,0,0); }else{ $q= "insert into groupe (libelle_groupe) values ('".addslashes(trim($tab[15]))."') "; $r = pmb_mysql_query($q, $dbh); $id_grp =pmb_mysql_insert_id($dbh); } $requete="insert into empr_groupe(empr_id,groupe_id) values ('".$id_lect."','".$id_grp."')"; if(!pmb_mysql_query($requete)) echo "Requete echoué : ".$requete."
"; } if(trim($tab[16]) and trim($tab[16]) != trim($tab[15])){ //On créer le groupe si il n'existe pas et on y affecte le lecteur $requete="select id_groupe from groupe where libelle_groupe='".addslashes(trim($tab[16]))."'"; $r = pmb_mysql_query($requete, $dbh); if (pmb_mysql_num_rows($r)) { $id_grp=pmb_mysql_result($r,0,0); }else{ $q= "insert into groupe (libelle_groupe) values ('".addslashes(trim($tab[16]))."') "; $r = pmb_mysql_query($q, $dbh); $id_grp =pmb_mysql_insert_id($dbh); } $requete="insert into empr_groupe(empr_id,groupe_id) values ('".$id_lect."','".$id_grp."')"; if(!pmb_mysql_query($requete)) echo "Requete echoué : ".$requete."
"; } if ($tab[13] and count($tab) == 18) { //Traitement du champs perso email $q="select idchamp from empr_custom where name='email_perso' limit 1"; $r = pmb_mysql_query($q, $dbh); if (pmb_mysql_num_rows($r)) { $idchamp=pmb_mysql_result($r,0,0); //On supprime l'ancien $requete="delete from empr_custom_values where empr_custom_origine='".$id_lect."' and empr_custom_champ='".$idchamp."'"; if(!pmb_mysql_query($requete)) echo "Requete echoué : ".$requete."
"; //On créer le nouveau $q = "insert into empr_custom_values (empr_custom_champ, empr_custom_origine, empr_custom_small_text) "; $q.= "values('".$idchamp."', '".$id_lect."','".addslashes($tab[13])."' ) "; pmb_mysql_query($q, $dbh); } } } function decoup_fic_lect($fichier){ $row = 0; $notices=array(); while (($data = fgetcsv($fichier,0,",")) !== FALSE) { $notices[$row]=$data; $row++; } return $notices; } function import_empr($dbh){ global $lect_cree,$lect_erreur,$lect_modif,$type_import,$type_modif,$lect_supprime,$lect_interdit; $lect_tot=0; $lect_supprime=0; $lect_cree=0; $lect_erreur=0; $lect_modif=0; $lect_interdit=0; //La structure du fichier texte doit être la suivante avec ceci comme première ligne: // Etudiant // "MatriculeHenam","empr_cb","empr_nom","empr_prenom","empr_adr1","empr_cp","empr_ville","empr_pays","empr_tel1","empr_tel2","empr_mail","empr_sexe","empr_year","EmailPerso","localisation","groupe" //Professeur // "MatriculeHenam","empr_cb","empr_nom","empr_prenom","empr_adr1","empr_cp","empr_ville","empr_pays","empr_tel1","empr_tel2","empr_mail","empr_sexe","empr_year" //Upload du fichier if (!($_FILES['import_lec']['tmp_name'])){ print "Cliquez sur Précédent et choisissez un fichier"; return ; }elseif (!(move_uploaded_file($_FILES['import_lec']['tmp_name'], "./temp/".basename($_FILES['import_lec']['tmp_name'])))) { print "Le fichier n'a pas pu être téléchargé. Voici plus d'informations :
"; print_r($_FILES)."

"; return ; } $fichier = @fopen( "./temp/".basename($_FILES['import_lec']['tmp_name']), "r" ); if ($fichier) { $lect=decoup_fic_lect($fichier); for($i=0;$iErreur : Personne non prise en compte car le nombre de champ n'est pas valide :
"); echo "

";
	      	 	print_r($lect[$i]);
	        	echo "
"; }elseif(trim($lect[$i][0]) == "" or trim($lect[$i][1]) == "" or trim($lect[$i][2]) === ""){ $lect_tot++; $lect_erreur++; print("Erreur : Personne non prise en compte car elle n'a pas de nom, de code barres ou de matricule :
"); echo "
";
	      	 	print_r($lect[$i]);
	        	echo "
"; }else{ $lect_tot++; if($type_import == "nouveau_lect"){ //Tout les lecteurs à traiter //On regarde si le lecteur existe déja en le recherchant par son badge $requete="select id_empr from empr join empr_custom_values on empr_custom_origine=id_empr where empr_cb LIKE '".addslashes($lect[$i][1])."%' and empr_custom_champ='2' and empr_custom_small_text='".addslashes($lect[$i][0])."' "; $select = pmb_mysql_query($requete,$dbh); $nb_enreg = pmb_mysql_num_rows($select); if($nb_enreg == 1){ maj_lect_par_lect($lect[$i],$dbh,$statut,pmb_mysql_result($select,0,0)); }elseif($nb_enreg > 1){ $lect_erreur++; echo "Erreur : Attention le code barre ".$lect[$i][0]." est en double dans la base veuillez le modifier pour l'un des deux lecteurs
"; return; }else{ import_lect_par_lect($lect[$i],$dbh); } }else{ supp_lect_par_lect($lect[$i],$dbh); $group_supp=0; if($i+1 == count($lect)){ $requete="delete groupe from groupe left join empr_groupe on id_groupe=groupe_id where empr_id is null"; $res=pmb_mysql_query($requete, $dbh); $group_supp=pmb_mysql_affected_rows(); } } } } print("
_____________________
"); if($lect_erreur)echo " Attention ".$lect_erreur." lecteur(s) n'a(ont) pas été traité(s) : voir erreur(s) ci-dessus
"; echo "Nombre total de lecteurs dans le fichier : ".$lect_tot."
"; if($type_import == "nouveau_lect"){ echo "Nombre de lecteurs créés : ".$lect_cree."
"; echo "Nombre de lecteurs modifiés : ".$lect_modif."
"; }else{ echo "Nombre d'anciens lecteurs supprimés : ".$lect_supprime."
"; echo "Nombre d'anciens lecteurs avec un statut Interdit (non supprimés car ils ont au moins un prêt en cours) : ".$lect_interdit."
"; echo "Nombre de groupes inutilisés supprimés : ".$group_supp."
"; } fclose($fichier); } } switch($action) { case 1: if ($imp_empr){ import_empr($dbh); } else { show_import_choix_fichier($dbh); } break; case 2: break; default: show_import_choix_fichier($dbh); break; } ?>