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 :<br />"; print_r($_FILES) . "<p>"; return; } $fichier = @fopen("./temp/" . basename($_FILES['import_lec']['tmp_name']), "r"); if ($fichier) { $lect = decoup_fic_lect($fichier); for ($i = 0; $i < count($lect); $i++) { $statut = ""; if ($type_modif == "modif_statut") { $statut = "Importé"; } if (count($lect[$i]) == 1 or $lect[$i][0] == "MatriculeHenam") { //Passe ici pour l'entête et les ligne vide (la dernière) } elseif (count($lect[$i]) != 18 && count($lect[$i]) != 14) { $lect_tot++; $lect_erreur++; print "<b>Erreur : Personne non prise en compte car le nombre de champ n'est pas valide : </b><br />"; echo "<pre>"; print_r($lect[$i]); echo "</pre>"; } elseif (trim($lect[$i][0]) == "" or trim($lect[$i][1]) == "" or trim($lect[$i][2]) === "") { $lect_tot++; $lect_erreur++; print "<b>Erreur : Personne non prise en compte car elle n'a pas de nom, de code barres ou de matricule : </b><br />"; echo "<pre>"; print_r($lect[$i]); echo "</pre>"; } 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 = mysql_query($requete, $dbh); $nb_enreg = mysql_num_rows($select); if ($nb_enreg == 1) { maj_lect_par_lect($lect[$i], $dbh, $statut, mysql_result($select, 0, 0)); } elseif ($nb_enreg > 1) { $lect_erreur++; echo "<b>Erreur : Attention le code barre " . $lect[$i][0] . " est en double dans la base veuillez le modifier pour l'un des deux lecteurs<b><br />"; 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 = mysql_query($requete, $dbh); $group_supp = mysql_affected_rows(); } } } } print "<br />_____________________<br />"; if ($lect_erreur) { echo "<b> Attention " . $lect_erreur . " lecteur(s) n'a(ont) pas été traité(s) : voir erreur(s) ci-dessus </b><br />"; } echo "Nombre total de lecteurs dans le fichier : " . $lect_tot . "<br />"; if ($type_import == "nouveau_lect") { echo "Nombre de lecteurs créés : " . $lect_cree . "<br />"; echo "Nombre de lecteurs modifiés : " . $lect_modif . "<br />"; } else { echo "Nombre d'anciens lecteurs supprimés : " . $lect_supprime . "<br />"; echo "Nombre d'anciens lecteurs avec un statut Interdit (non supprimés car ils ont au moins un prêt en cours) : " . $lect_interdit . "<br />"; echo "Nombre de groupes inutilisés supprimés : " . $group_supp . "<br />"; } fclose($fichier); } }
function import_empr($dbh) { global $lect_cree, $lect_erreur, $lect_modif, $lect_non_traite; $lect_tot = 0; $lect_supprime = 0; $lect_cree = 0; $lect_erreur = 0; $lect_modif = 0; $lect_interdit = 0; $lect_non_traite = 0; //La structure du fichier texte doit être la suivante avec ceci comme première ligne: //MATRICULE;NOM_USAGE;PRENOM_USAGE;DAT_DER_ENTREE;DAT_SORTIE;COD_UF;LIB_UF;POSTE;SEXE;TELEPHONE;USER_NAME;BADGE;MAIL //Upload du fichier if (!$_FILES['import_lec']['tmp_name']) { print "Cliquez sur Précédent et choisissez un fichier"; } 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 :<br />"; print_r($_FILES) . "<p>"; } $fichier = @fopen("./temp/" . basename($_FILES['import_lec']['tmp_name']), "r"); if ($fichier) { //on change la date de mise a jour pour retrouver les lecteurs $requete = "select id_empr from empr where empr_modif='" . addslashes(date('Y-m-j')) . "'"; $select = pmb_mysql_query($requete, $dbh); while ($verif = pmb_mysql_fetch_array($select)) { $requete = "update empr set empr_modif=DATE_SUB(empr_modif, INTERVAL 1 DAY) where id_empr='" . addslashes($verif["id_empr"]) . "' "; if (!pmb_mysql_query($requete, $dbh)) { echo "Erreur : requete echoué : " . $requete . "<br />"; } } while (!feof($fichier)) { $buffer = fgets($fichier, 4096); //$buffer = pmb_mysql_escape_string($buffer); $tab = explode(";", $buffer); $nb = 0; $incr = 0; $empr = array(); $valeur = false; for ($i = 0; $i < count($tab); $i++) { $nb = $nb + substr_count($tab[$i], "\""); if ($nb % 2 === 0) { if ($valeur === false) { $valeur = $tab[$i]; } else { $valeur = $valeur . ";" . $tab[$i]; } //$notices[$i][$incr]=trim(trim($valeur,"\"")); $empr[$incr] = preg_replace("/^\"|\"\$|\"\r\n\$/", "", $valeur); $valeur = false; $incr++; $nb = 0; } else { if ($valeur === false) { $valeur = $tab[$i]; } else { $valeur = $valeur . ";" . $tab[$i]; } } } if (count($empr) == 1 or $empr[0] == "MATRICULE") { //Passe ici pour l'entête et les ligne vide (la dernière) } elseif (count($empr) != 14) { $lect_tot++; $lect_erreur++; print "<b>Erreur : Personne non prise en compte car le nombre de champ n'est pas valide : </b><br />"; echo "<pre>"; print_r($empr); echo "</pre>"; } elseif (trim($empr[1]) == "" or trim($empr[12]) === "") { $lect_tot++; $lect_erreur++; print "<b>Erreur : Personne non prise en compte car elle n'a pas de nom : </b><br />"; echo "<pre>"; print_r($empr); echo "</pre>"; } else { //Tout les lecteurs à traiter $lect_tot++; import_lect_par_lect($empr, $dbh); } } //On supprime tout les lecteurs qui ne sont pas dans le fichier et qui n'ont pas de prets en cours $req_select_verif_pret = "SELECT distinct id_empr, pret_idempr FROM empr left join pret on id_empr=pret_idempr WHERE empr_modif != '" . addslashes(date('Y-m-j')) . "' "; $select_verif_pret = pmb_mysql_query($req_select_verif_pret, $dbh); while ($verif_pret = pmb_mysql_fetch_array($select_verif_pret)) { //pour tous les emprunteurs qui n'ont pas de pret en cours if ($verif_pret["pret_idempr"]) { $requete = "update empr set empr_statut='2' where id_empr='" . addslashes($verif_pret["id_empr"]) . "' "; if (!pmb_mysql_query($requete, $dbh)) { $lect_erreur++; echo " requete echoué : " . $requete . "<br />"; } else { $lect_interdit++; } } else { emprunteur::del_empr($verif_pret["id_empr"]); $lect_supprime++; } } print "<br />_____________________<br />"; if ($lect_erreur) { echo "<b> Attention " . $lect_erreur . " lecteur(s) n'a(ont) pas été traité(s) : voir erreur(s) ci-dessus </b><br />"; } echo "Nombre de lecteurs créés : " . $lect_cree . "<br />"; echo "Nombre de lecteurs non traité (en double ou déjà traité) : " . $lect_non_traite . "<br />"; echo "Nombre de lecteurs ou la date d'expiration à été repoussée : " . $lect_modif . "<br />"; echo "Nombre total de lecteurs dans le fichier : " . $lect_tot . "<br />"; echo "Nombre d'anciens lecteurs (non présent dans le fichier) supprimés : " . $lect_supprime . "<br />"; echo "Nombre d'anciens lecteurs (non présent dans le fichier) avec un statut interdit (non supprimé car ils ont au moins un prêt en cours) : " . $lect_interdit . "<br />"; fclose($fichier); } }