function import_profs($separateur, $dbh, $type_import, $mdp_auto, $num_auto, $adr_mail)
{
    //La structure du fichier texte doit être la suivante :
    //[numéro],nom, prénom, adr1, adr2, code postal, commune, tel, année de naissance, sexe, e-mail,[login,mdp]
    $prof = array("Numéro auto", "Nom", "Prénom");
    $date_auj = date("Y-m-d", time());
    $date_an_proch = date("Y-m-d", time() + 3600 * 24 * 30.42 * 12);
    //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 &ecirc;tre t&eacute;l&eacute;charg&eacute;. Voici plus d'informations :<br />";
        print_r($_FILES) . "<p>";
    }
    $fichier = @fopen("./temp/" . basename($_FILES['import_lec']['tmp_name']), "r");
    if ($fichier) {
        if ($type_import == 'maj_complete') {
            //Vide la table empr_groupe
            //$delete_empr_groupe = pmb_mysql_query("DELETE FROM empr_groupe",$dbh);
            //echo $type_import;
            //Supprime les profs qui n'ont pas de prêts en cours
            $req_select_verif_pret = "SELECT id_empr, empr_cb FROM groupe, empr_groupe, empr left join pret on id_empr=pret_idempr WHERE pret_idempr is null and empr_groupe.empr_id = empr.id_empr and empr_groupe.groupe_id = id_groupe and libelle_groupe like 'Professeurs'";
            $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
                emprunteur::del_empr($verif_pret["id_empr"]);
            }
        }
        //Récupération dans la table 'empr' du 'empr_cb' maximum
        $req = pmb_mysql_query("SELECT MAX(empr_cb) AS cbmax FROM empr WHERE empr_categ=2 and empr_codestat=1", $dbh);
        $cb = pmb_mysql_result($req, 0, "cbmax");
        if (!$cb) {
            $numeroP = "0000";
        } else {
            $numeroP = substr($cb, 1, 4);
        }
        while (!feof($fichier)) {
            $buffer = fgets($fichier, 4096);
            $buffer = pmb_mysql_escape_string($buffer);
            $tab = explode($separateur, $buffer);
            if ($num_auto != 'num_auto') {
                $buf_prenom = explode("\\", $tab[1]);
                $prenom = $buf_prenom[0];
            } else {
                $buf_prenom = explode("\\", $tab[2]);
                $prenom = $buf_prenom[1];
            }
            // Traitement du prof
            $select = pmb_mysql_query("SELECT id_empr, empr_cb FROM empr WHERE empr_nom = '" . $tab[0] . "' AND empr_prenom = '" . $prenom . "'", $dbh);
            $nb_enreg = pmb_mysql_num_rows($select);
            if (!$tab[0] || $tab[0] == "") {
                if ($tab[1] != "") {
                    print "<b> Professeur non pris en compte car \"Nom\" non renseign&eacute; : </b><br />";
                    for ($i = 1; $i < 3; $i++) {
                        print $prof[$i] . " : " . $tab[$i - 1] . ", ";
                    }
                    print "<br />";
                }
                $nb_enreg = 2;
            }
            if ($num_auto == 'num_auto') {
                // Si il y a un numéro en debut de fichier,
                // on decale les indices du tab à la baisse :
                $prof_cb = $tab[0];
                $tab[0] = $tab[1];
                $tab[1] = $tab[2];
                $tab[2] = $tab[3];
                $tab[3] = $tab[4];
                $tab[4] = $tab[5];
                $tab[5] = $tab[6];
                $tab[6] = $tab[7];
                $tab[7] = $tab[8];
                $tab[8] = $tab[9];
                if ($adr_mail == 'adr_mail') {
                    $tab[9] = $tab[10];
                    $tab[10] = $tab[11];
                    $tab[11] = $tab[12];
                } else {
                    $tab[9] = "";
                }
            } else {
                //Génération du code-barre
                $numeroP = $numeroP + 1;
                if ($numeroP < 10) {
                    $prof_cb = "P000" . $numeroP;
                } elseif ($numeroP < 100) {
                    $prof_cb = "P00" . $numeroP;
                } elseif ($numeroP < 1000) {
                    $prof_cb = "P0" . $numeroP;
                } elseif ($numeroP < 10000) {
                    $prof_cb = "P" . $numeroP;
                }
            }
            // On verifie que le mail est bien de la forme chaine@chaine :
            if ($adr_mail == 'adr_mail') {
                if (preg_match("#.*@.*#", $tab[9]) == false) {
                    $tab[9] = "";
                }
            }
            //Gestion du sexe
            switch ($tab[8][0]) {
                case M:
                    $sexe = 1;
                    break;
                case F:
                    $sexe = 2;
                    break;
                default:
                    $sexe = 0;
                    break;
            }
            //Génération du login
            if ($mdp_auto != 'mdp_auto') {
                $login = cre_login($tab[0], $prenom, $dbh);
                $mdp = $tab[7];
            } else {
                $login = $tab[10];
                $mdp = $tab[11];
            }
            if (!$mdp || $mdp == "") {
                $mdp = $login;
            }
            switch ($nb_enreg) {
                case 0:
                    //Ce prof n'est pas enregistré
                    $req_insert = "INSERT INTO empr(empr_cb, empr_nom, empr_prenom, empr_adr1, empr_adr2, empr_cp, empr_ville, ";
                    $req_insert .= "empr_mail, empr_tel1, empr_year, empr_categ, empr_codestat, empr_creation, empr_sexe,  ";
                    $req_insert .= "empr_login, empr_password, empr_date_adhesion, empr_date_expiration) ";
                    $req_insert .= "VALUES ('{$prof_cb}','{$tab['0']}','{$tab['1']}', '{$tab['2']}', '{$tab['3']}', '{$tab['4']}', '{$tab['5']}', '{$tab['9']}', '{$tab['6']}', '{$tab['7']}', ";
                    $req_insert .= "2, 1, '{$date_auj}', {$sexe}, '{$login}', replace(replace('" . $mdp . "','\n',''),'\r',''), '{$date_auj}', '{$date_an_proch}' )";
                    $insert = pmb_mysql_query($req_insert, $dbh);
                    if (!$insert) {
                        print "<b>&Eacute;chec de la cr&eacute;ation du professeur suivant (Erreur : " . pmb_mysql_error() . ") : </b><br />";
                        for ($i = 1; $i < 3; $i++) {
                            print $prof[$i] . " : " . $tab[$i - 1] . ", ";
                        }
                        print "<br />";
                    } else {
                        emprunteur::update_digest($login, str_replace(array("\n", "\r"), "", $mdp));
                        emprunteur::hash_password($login, str_replace(array("\n", "\r"), "", $mdp));
                        $cpt_insert++;
                    }
                    $j++;
                    gestion_groupe("Professeurs", $prof_cb, $dbh);
                    break;
                case 1:
                    //Ce prof est déja enregistré
                    $empr_cbs = pmb_mysql_fetch_array($select);
                    $prof_cb = $empr_cbs['empr_cb'];
                    $req_update = "UPDATE empr SET empr_nom = '{$tab['0']}', empr_prenom = '{$tab['1']}', empr_adr1 = '{$tab['2']}', ";
                    $req_update .= "empr_adr2 = '{$tab['3']}', empr_cp = '{$tab['4']}', empr_ville = '{$tab['5']}', empr_mail = '{$tab['9']}', ";
                    $req_update .= "empr_tel1 = '{$tab['6']}', empr_year = '{$tab['7']}', empr_categ = '2', empr_codestat = '1', empr_modif = '{$date_auj}', empr_sexe = '{$sexe}', ";
                    $req_update .= "empr_login = '******', empr_password=replace(replace('" . $mdp . "','\n',''),'\r',''), ";
                    $req_update .= "empr_date_adhesion = '{$date_auj}', empr_date_expiration = '{$date_an_proch}' ";
                    $req_update .= "WHERE empr_nom = '{$tb['0']}' AND empr_prenom = '{$prenom}'";
                    $update = pmb_mysql_query($req_update, $dbh);
                    if (!$update) {
                        print "<b>&Eacute;chec de la modification du professeur suivant (Erreur : " . pmb_mysql_error() . ") : </b><br />";
                        for ($i = 1; $i < 3; $i++) {
                            print $prof[$i] . " : " . $tab[$i - 1] . ", ";
                        }
                        print "<br />";
                    } else {
                        emprunteur::update_digest($login, str_replace(array("\n", "\r"), "", $mdp));
                        emprunteur::hash_password($login, str_replace(array("\n", "\r"), "", $mdp));
                        $cpt_maj++;
                    }
                    $j++;
                    break;
                case 2:
                    break;
                default:
                    print "<b>&Eacute;chec pour le professeur suivant (Erreur : " . pmb_mysql_error() . ") : </b><br />";
                    for ($i = 0; $i < 3; $i++) {
                        print $prof[$i] . " : " . $tab[$i] . ", ";
                    }
                    print "<br />";
                    break;
            }
            //gestion_groupe("Professeurs", $prof_cb, $dbh);
        }
        //Affichage des insert et update
        print "<br />_____________________<br />";
        if ($cpt_insert) {
            print $cpt_insert . " Professeurs cr&eacute;&eacute;s. <br />";
        }
        if ($cpt_maj) {
            print $cpt_maj . " Professeurs modifi&eacute;s. <br />";
        }
        fclose($fichier);
    }
}
function import_profs($separateur, $dbh, $type_import)
{
    //La structure du fichier texte doit être la suivante :
    //nom, prénom (le cb est généré automatiquement)
    $prof = array("Numéro auto", "Nom", "Prénom");
    $date_auj = date("Y-m-d", time());
    $date_an_proch = date("Y-m-d", time() + 3600 * 24 * 30.42 * 12);
    //Upload du fichier
    if (!$_FILES['import_lec']['tmp_name']) {
        print "Cliquez sur Pr&eacute;c&eacute;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) {
        if ($type_import == 'maj_complete') {
            //Vide la table empr_groupe
            pmb_mysql_query("DELETE FROM empr_groupe", $dbh);
            echo $type_import;
            //Supprime les profs qui n'ont pas de prêts en cours
            $req_select_verif_pret = "SELECT id_empr FROM empr left join pret on id_empr=pret_idempr WHERE pret_idempr is null and empr_cb NOT LIKE 'P%'";
            $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
                emprunteur::del_empr($verif_pret["id_empr"]);
            }
        }
        //Récupération dans la table 'empr' du 'empr_cb' maximum
        $req = pmb_mysql_query("SELECT MAX(empr_cb) AS cbmax FROM empr WHERE empr_categ=2 and empr_codestat=1", $dbh);
        $cb = pmb_mysql_result($req, 0, "cbmax");
        if (!$cb) {
            $numeroP = "000";
        } else {
            $numeroP = substr($cb, 1, 3);
        }
        while (!feof($fichier)) {
            $buffer = fgets($fichier, 4096);
            $buffer = pmb_mysql_escape_string($buffer);
            $tab = explode($separateur, $buffer);
            $buf_prenom = explode("\\", $tab[1]);
            $prenom = $buf_prenom[0];
            // Traitement du prof
            $select = pmb_mysql_query("SELECT id_empr FROM empr WHERE empr_nom = '" . $tab[0] . "' AND empr_prenom = '" . $prenom . "'", $dbh);
            $nb_enreg = pmb_mysql_num_rows($select);
            if (!$tab[0] || $tab[0] == "") {
                print "<b> Professeur non pris en compte car \"Nom\" non renseigné : </b><br />";
                for ($i = 1; $i < 3; $i++) {
                    print $prof[$i] . " : " . $tab[$i - 1] . ", ";
                }
                print "<br />";
                $nb_enreg = 2;
            }
            //Gestion du sexe
            switch ($tab[8][0]) {
                case M:
                    $sexe = 1;
                    break;
                case F:
                    $sexe = 2;
                    break;
                default:
                    $sexe = 0;
                    break;
            }
            //Génération du code-barre
            $numeroP = $numeroP + 1;
            if ($numeroP < 10) {
                $prof_cb = "P00" . $numeroP;
            } elseif ($numeroP < 100) {
                $prof_cb = "P0" . $numeroP;
            } elseif ($numeroP < 1000) {
                $prof_cb = "P" . $numeroP;
            }
            //Génération du login
            $login = cre_login($tab[0], $prenom, $dbh);
            //Pour l'instant login = mdp car lors de l'import des profs, aucune date de naissance n'est fournie
            switch ($nb_enreg) {
                case 0:
                    //Ce prof n'est pas enregistré
                    $req_insert = "INSERT INTO empr(empr_cb, empr_nom, empr_prenom, empr_adr1, empr_adr2, empr_cp, empr_ville, ";
                    $req_insert .= "empr_mail, empr_tel1, empr_year, empr_categ, empr_codestat, empr_creation, empr_sexe,  ";
                    $req_insert .= "empr_login, empr_password, empr_date_adhesion, empr_date_expiration) ";
                    $req_insert .= "VALUES ('{$prof_cb}','{$tab['0']}','{$prenom}', '{$tab['2']}', '{$tab['3']}', '{$tab['4']}', '{$tab['5']}', '{$tab['9']}', '{$tab['6']}', '{$tab['7']}', ";
                    $req_insert .= "2, 1, '{$date_auj}', {$sexe}, '{$login}', replace(replace('" . $tab[7] . "','\n',''),'\r',''), '{$date_auj}', '{$date_an_proch}' )";
                    $insert = pmb_mysql_query($req_insert, $dbh);
                    if (!$insert) {
                        print "<b>Echec de la création du professeur suivant (Erreur : " . pmb_mysql_error() . ") : </b><br />";
                        for ($i = 1; $i < 3; $i++) {
                            print $prof[$i] . " : " . $tab[$i - 1] . ", ";
                        }
                        print "<br />";
                    } else {
                        emprunteur::update_digest($login, str_replace(array("\n", "\r"), "", $tab[7]));
                        emprunteur::hash_password($login, str_replace(array("\n", "\r"), "", $tab[7]));
                        $cpt_insert++;
                    }
                    $j++;
                    break;
                case 1:
                    //Ce prof est déja enregistré
                    $req_update = "UPDATE empr SET empr_nom = '{$tab['0']}', empr_prenom = '{$tab['1']}', empr_adr1 = '{$tab['2']}', ";
                    $req_update .= "empr_adr2 = '{$tab['3']}', empr_cp = '{$tab['4']}', empr_ville = '{$tab['5']}', empr_mail = '{$tab['9']}', ";
                    $req_update .= "empr_tel1 = '{$tab['6']}', empr_year = '{$tab['7']}', empr_categ = '2', empr_codestat = '1', empr_modif = '{$date_auj}', empr_sexe = '{$sexe}', ";
                    $req_update .= "empr_login = '******', empr_password= replace(replace('" . $tab[7] . "','\n',''),'\r',''), ";
                    $req_update .= "empr_date_adhesion = '{$date_auj}', empr_date_expiration = '{$date_an_proch}' ";
                    $req_update .= "WHERE empr_nom = '{$tb['0']}' AND empr_prenom = '{$prenom}'";
                    $update = pmb_mysql_query($req_update, $dbh);
                    if (!$update) {
                        print "<b>Echec de la modification du professeur suivant (Erreur : " . pmb_mysql_error() . ") : </b><br />";
                        for ($i = 1; $i < 3; $i++) {
                            print $prof[$i] . " : " . $tab[$i - 1] . ", ";
                        }
                        print "<br />";
                    } else {
                        emprunteur::update_digest($login, str_replace(array("\n", "\r"), "", $tab[7]));
                        emprunteur::hash_password($login, str_replace(array("\n", "\r"), "", $tab[7]));
                        $cpt_maj++;
                    }
                    $j++;
                    break;
                case 2:
                    break;
                default:
                    print "<b>Echec pour le professeur suivant (Erreur : " . pmb_mysql_error() . ") : </b><br />";
                    for ($i = 0; $i < 3; $i++) {
                        print $prof[$i] . " : " . $tab[$i] . ", ";
                    }
                    print "<br />";
                    break;
            }
        }
        //Affichage des insert et update
        print "<br />_____________________<br />";
        if ($cpt_insert) {
            print $cpt_insert . " Professeurs créés. <br />";
        }
        if ($cpt_maj) {
            print $cpt_maj . " Professeurs modifiés. <br />";
        }
        fclose($fichier);
    }
}
             print $buf_contenu;
             return;
         }
         $the_procedure = $procedure["procedure"];
     }
     if (!$the_procedure) {
         echo htmlentities($msg["remote_procedures_error_client"], ENT_QUOTES, $charset);
         break;
     }
     if ($the_procedure->type != "PEMPS") {
         echo htmlentities($msg["remote_procedures_circ_noPEMPS"], ENT_QUOTES, $charset);
         break;
     }
     $sql = "CREATE TEMPORARY TABLE remote_proc LIKE procs";
     pmb_mysql_query($sql, $dbh) or die(pmb_mysql_error());
     $sql = "INSERT INTO remote_proc (idproc, name, requete, comment, autorisations, parameters, num_classement) VALUES (0, '" . pmb_mysql_escape_string($the_procedure->name) . "', '" . pmb_mysql_escape_string($the_procedure->sql) . "', '" . pmb_mysql_escape_string($the_procedure->comment) . "', '', '" . pmb_mysql_escape_string($the_procedure->params) . "', 0)";
     pmb_mysql_query($sql, $dbh) or die(pmb_mysql_error());
     $idproc = pmb_mysql_insert_id($dbh);
     $hp = new parameters($idproc, "remote_proc");
     if (preg_match_all("|!!(.*)!!|U", $hp->proc->requete, $query_parameters)) {
         $hp->get_final_query();
         $the_procedure->sql = $hp->final_query;
     }
     $execute_external = true;
     $execute_external_procedure = $the_procedure;
     include "./circ/caddie/gestion/execute.inc.php";
     break;
 default:
     if (!$pmb_procedure_server_address) {
         echo $msg["remote_procedures_error_noaddress"];
         break;
Beispiel #4
0
 function make_serialized_task_params()
 {
     global $dbh, $type_proc, $form_procs, $form_procs_remote;
     global $tocsv_checked, $tocsv_sep, $tocsv_filepath, $tocsv_enclosure;
     global $pmb_procedure_server_credentials, $pmb_procedure_server_address;
     $t = parent::make_serialized_task_params();
     $t['type_proc'] = stripslashes($type_proc);
     $t['form_procs'] = stripslashes($form_procs);
     $t['form_procs_remote'] = stripslashes($form_procs_remote);
     $t['tocsv']['checked'] = $tocsv_checked;
     $t['tocsv']['sep'] = stripslashes($tocsv_sep);
     $t['tocsv']['filepath'] = stripslashes($tocsv_filepath);
     $t['tocsv']['enclosure'] = stripslashes($tocsv_enclosure);
     if ($form_procs) {
         $hp = new parameters($form_procs, 'procs');
         $t['envt'] = $hp->make_serialized_parameters_params();
     } else {
         if ($form_procs_remote) {
             $id = $form_procs_remote;
             $pmb_procedure_server_credentials_exploded = explode("\n", $pmb_procedure_server_credentials);
             if ($pmb_procedure_server_address && count($pmb_procedure_server_credentials_exploded) == 2) {
                 $aremote_procedure_client = new remote_procedure_client($pmb_procedure_server_address, trim($pmb_procedure_server_credentials_exploded[0]), trim($pmb_procedure_server_credentials_exploded[1]));
                 $procedure = $aremote_procedure_client->get_proc($id, "AP");
                 if (!$procedure['error_message']) {
                     $the_procedure = $procedure['procedure'];
                     if ($the_procedure) {
                         $sql = "CREATE TEMPORARY TABLE remote_proc LIKE procs";
                         pmb_mysql_query($sql, $dbh) or die(pmb_mysql_error());
                         $sql = "INSERT INTO remote_proc (idproc, name, requete, comment, autorisations, parameters, num_classement) VALUES (0, '" . pmb_mysql_escape_string($the_procedure->name) . "', '" . pmb_mysql_escape_string($the_procedure->sql) . "', '" . pmb_mysql_escape_string($the_procedure->comment) . "', '', '" . pmb_mysql_escape_string($the_procedure->params) . "', 0)";
                         pmb_mysql_query($sql, $dbh) or die(pmb_mysql_error());
                         $idproc = pmb_mysql_insert_id($dbh);
                         $hp = new parameters($idproc, "remote_proc");
                         $t['envt'] = $hp->make_serialized_parameters_params();
                     }
                 }
             }
         }
     }
     return serialize($t);
 }
 print $desc_empr[0][2].", ";        //        mysql_field_longeur
 print $desc_empr[0][3];", ";        //        estNumerique ou non!
 print $desc_table[$j][4];           //        auto_increment ou non!
 */
 $nbChamp_empr = count($desc_empr);
 //
 //  traitement du buffer pour chaque ligne
 //
 foreach ($bufferLine as $dummykey => $tmp) {
     $bufferChamp = explode($Sep_Champs, $tmp);
     $cpt = count($bufferChamp) - 1;
     // de 1 ? la fin, le 0 est comme null!
     for ($j = $cpt; $j >= 0; $j--) {
         // el?ve les " et les espaces en debut et fin du string(pour chaque champ!)
         $bufferChamp[$j + 1] = trim($bufferChamp[$j], "\"");
         $bufferChamp[$j + 1] = pmb_mysql_escape_string($bufferChamp[$j + 1]);
     }
     $bufferChamp[0] = "";
     if (return_cb($dbh, $bufferChamp[${$desc_empr}[1][0]])) {
         // ca veut dire que c'est un update d'une personne deja dans la BD
         for ($i = 1; $i < $nbChamp_empr; $i++) {
             if (!$desc_empr[$i][4] and $bufferChamp[${$desc_empr}[$i][0]]) {
                 // s'il n'est pas auto incr?mentable
                 if ($desc_empr[$i][3]) {
                     // s'il est num?rique
                     $query2 = 'update empr set ' . $desc_empr[$i][0] . ' = ' . substr($bufferChamp[${$desc_empr}[$i][0]], 0, $desc_empr[$i][2]) . ' where empr_cb = "' . $bufferChamp[${$desc_empr}[1][0]] . '";';
                 } else {
                     $query2 = 'update empr set ' . $desc_empr[$i][0] . ' = "' . substr($bufferChamp[${$desc_empr}[$i][0]], 0, $desc_empr[$i][2]) . '" where empr_cb = "' . $bufferChamp[${$desc_empr}[1][0]] . '";';
                 }
                 if ($i == 4) {
                     // l'exeption pour l'adresse (2 champs dans le 2e formulaire)
 function fetch_data()
 {
     global $dbh;
     //enumerate tables
     $res = pmb_mysql_list_tables(DATA_BASE);
     $i = 0;
     while ($i < pmb_mysql_num_rows($res)) {
         $update_a_faire = 0;
         /* permet de gérer les id auto_increment qui auraient pour valeur 0 */
         $table_name = pmb_mysql_tablename($res, $i);
         bzwrite($this->fptr, "delete from {$table_name};\n");
         $this->dump .= "delete from {$table_name};\n";
         //parse the field info first
         $res2 = pmb_mysql_query("select * from {$table_name} order by 1 ", $dbh);
         $nf = pmb_mysql_num_fields($res2);
         $nr = pmb_mysql_num_rows($res2);
         $fields = '';
         $values = '';
         for ($b = 0; $b < $nf; $b++) {
             $fn = pmb_mysql_field_name($res2, $b);
             $ft = pmb_mysql_field_type($res2, $b);
             $fs = pmb_mysql_field_len($res2, $b);
             $ff = pmb_mysql_field_flags($res2, $b);
             $is_numeric = false;
             switch (strtolower($ft)) {
                 case "int":
                     $is_numeric = true;
                     break;
                 case "blob":
                     $is_numeric = false;
                     break;
                 case "real":
                     $is_numeric = true;
                     break;
                 case "string":
                     $is_numeric = false;
                     break;
                 case "unknown":
                     switch (intval($fs)) {
                         case 4:
                             // little weakness here...
                             // there is no way (thru the PHP/MySQL interface)
                             // to tell the difference between a tinyint and a year field type
                             $is_numeric = true;
                             break;
                         default:
                             $is_numeric = true;
                             break;
                     }
                     break;
                 case "timestamp":
                     $is_numeric = true;
                     break;
                 case "date":
                     $is_numeric = false;
                     break;
                 case "datetime":
                     $is_numeric = false;
                     break;
                 case "time":
                     $is_numeric = false;
                     break;
                 default:
                     //future support for field types that are not recognized
                     //(hopefully this will work without need for future modification)
                     $is_numeric = true;
                     //I'm assuming new field types will follow SQL numeric syntax..
                     // this is where this support will breakdown
                     break;
             }
             $fields ? $fields .= ', ' . $fn : ($fields .= $fn);
             $fna[$b] = $fn;
             $ina[$b] = $is_numeric;
         }
         //parse out the table's data and generate the SQL INSERT statements in order to replicate the data itself...
         for ($c = 0; $c < $nr; $c++) {
             $row = pmb_mysql_fetch_row($res2);
             $values = '';
             for ($d = 0; $d < $nf; $d++) {
                 $data = strval($row[$d]);
                 if ($d == 0 && strval($row[$d]) == 0) {
                     /* traiter ici l'insertion avec valeur 1 pour id autoincrement et update à suivre */
                     $values ? $values .= ', ' . '1' : ($values .= '1');
                     $cle_update = pmb_mysql_field_name($res2, 0);
                     $update_a_faire = 1;
                 } else {
                     if ($ina[$d] == true) {
                         $values ? $values .= ', ' . intval($data) : ($values .= intval($data));
                     } else {
                         $values ? $values .= ", \"" . pmb_mysql_escape_string($data) . "\"" : ($values .= "\"" . pmb_mysql_escape_string($data) . "\"");
                     }
                 }
             }
             bzwrite($this->fptr, "insert into {$table_name} ({$fields}) values ({$values});\n");
             $this->dump .= "insert into {$table_name} ({$fields}) values ({$values});\n";
             if ($update_a_faire == 1) {
                 $update_a_faire = 0;
                 bzwrite($this->fptr, "update {$table_name} set " . $cle_update . "='0' where " . $cle_update . "='1';\n");
                 $this->dump .= "update {$table_name} set " . $cle_update . "='0' where " . $cle_update . "='1';\n";
             }
         }
         pmb_mysql_free_result($res2);
         $i++;
     }
 }
Beispiel #7
0
 function executeProc($procedure, $idProc, $tparams)
 {
     global $msg, $dbh, $charset, $PMBuserid;
     global $pmb_procedure_server_credentials, $pmb_procedure_server_address;
     if (SESSrights & ADMINISTRATION_AUTH) {
         $name = '';
         $report = '';
         if ($tparams['envt']) {
             foreach ($tparams['envt'] as $aparam => $vparam) {
                 global ${$aparam};
                 ${$aparam} = $vparam;
             }
         }
         switch ($procedure) {
             case INTERNAL:
                 $hp = new parameters($idProc, 'procs');
                 $hp->get_final_query();
                 $code_sql = $hp->final_query;
                 $autorisations = $hp->proc->autorisations;
                 break;
             case EXTERNAL:
                 $pmb_procedure_server_credentials_exploded = explode("\n", $pmb_procedure_server_credentials);
                 if ($pmb_procedure_server_address && count($pmb_procedure_server_credentials_exploded) == 2) {
                     $aremote_procedure_client = new remote_procedure_client($pmb_procedure_server_address, trim($pmb_procedure_server_credentials_exploded[0]), trim($pmb_procedure_server_credentials_exploded[1]));
                     $procedure = $aremote_procedure_client->get_proc($idProc, "AP");
                     $the_procedure = $procedure['procedure'];
                     if ($procedure['error_message']) {
                         $report = htmlentities($msg['remote_procedures_error_server'], ENT_QUOTES, $charset) . ':<br /><i>' . $procedure['error_message'] . '</i>';
                         $result = array('name' => $the_procedure->name, 'report' => $report);
                         return $result;
                     } else {
                         if ($the_procedure->params && $the_procedure->params != 'NULL') {
                             $sql = 'CREATE TEMPORARY TABLE remote_proc LIKE procs';
                             pmb_mysql_query($sql, $dbh) or die(pmb_mysql_error());
                             $sql = "INSERT INTO remote_proc (idproc, name, requete, comment, autorisations, parameters, num_classement) VALUES (0, '" . pmb_mysql_escape_string($the_procedure->name) . "', '" . pmb_mysql_escape_string($the_procedure->sql) . "', '" . pmb_mysql_escape_string($the_procedure->comment) . "', '', '" . pmb_mysql_escape_string($the_procedure->params) . "', 0)";
                             pmb_mysql_query($sql, $dbh) or die(pmb_mysql_error());
                             $idproc = pmb_mysql_insert_id($dbh);
                             $hp = new parameters($idproc, 'remote_proc');
                             $hp->get_final_query();
                             $the_procedure->sql = $hp->final_query;
                             $name = $the_procedure->name;
                             $code_sql = $the_procedure->sql;
                             $commentaire = $the_procedure->comment;
                         }
                     }
                 }
                 break;
         }
         $linetemp = explode(';', $code_sql);
         if ($autorisations) {
             $temp_autorisation = explode(' ', $autorisations);
         }
         $allow = false;
         if ($temp_autorisation) {
             foreach ($temp_autorisation as $userid) {
                 if ($userid == $PMBuserid) {
                     $allow = true;
                 }
             }
             if (!$allow) {
                 $report = $msg[11];
                 //					throw new Exception($message, $code);
                 $result = array('name' => $name, 'report' => $report);
                 return $result;
             }
         }
         $line = array();
         for ($i = 0; $i < count($linetemp); $i++) {
             if (trim($linetemp[$i])) {
                 $line[] = trim($linetemp[$i]);
             }
         }
         while (list($cle, $valeur) = each($line)) {
             if ($valeur) {
                 $report .= "<strong>" . $msg['procs_ligne'] . " {$cle} </strong>:&nbsp;{$valeur}<br /><br />";
                 $er = explain_requete($valeur);
                 if ($er) {
                     $res = @pmb_mysql_query($valeur, $dbh);
                     $report .= pmb_mysql_error();
                     $nbr_lignes = @pmb_mysql_num_rows($res);
                     $nbr_champs = @pmb_mysql_num_fields($res);
                     if ($nbr_lignes) {
                         $report .= "<table >";
                         for ($i = 0; $i < $nbr_champs; $i++) {
                             $fieldname = pmb_mysql_field_name($res, $i);
                             $report .= "<th>{$fieldname}</th>";
                         }
                         for ($i = 0; $i < $nbr_lignes; $i++) {
                             $row = pmb_mysql_fetch_row($res);
                             $report .= "<tr>";
                             foreach ($row as $dummykey => $col) {
                                 if (trim($col) == '') {
                                     $col = '&nbsp;';
                                 }
                                 $report .= '<td >' . $col . '</td>';
                             }
                             $report .= "</tr>";
                         }
                         $report .= "</table><hr />";
                         $report .= "<font color='#ff0000'>" . $msg['admin_misc_lignes'] . " " . pmb_mysql_affected_rows($dbh) . "</font>";
                     } else {
                         $report .= "<br /><font color='#ff0000'>" . $msg['admin_misc_lignes'] . " " . pmb_mysql_affected_rows($dbh);
                         $err = pmb_mysql_error($dbh);
                         if ($err) {
                             $report .= "<br />{$err}";
                         }
                         $report .= "</font><hr />";
                     }
                 } else {
                     // erreur explain_requete
                     $report .= $valeur . "<br /><br />" . $msg['proc_param_explain_failed'] . "<br /><br />" . $erreur_explain_rqt;
                 }
             }
         }
         // fin while
         //Export CSV sur le resultat de la derniere requete
         if ($er && $nbr_lignes && $tparams['tocsv']['checked'] == '1' && $tparams['tocsv']['filepath']) {
             if (!$tparams['tocsv']['sep']) {
                 $tparams['tocsv']['sep'] = ',';
             }
             $trow = array();
             if ($tparams['tocsv']['enclosure']) {
                 for ($i = 0; $i < $nbr_champs; $i++) {
                     $trow[] = addcslashes(pmb_mysql_field_name($res, $i), $tparams['tocsv']['enclosure']);
                 }
                 $row = $tparams['tocsv']['enclosure'] . implode($tparams['tocsv']['enclosure'] . $tparams['tocsv']['sep'] . $tparams['tocsv']['enclosure'], $trow) . $tparams['tocsv']['enclosure'] . "\r\n";
             } else {
                 $row = implode($tparams['tocsv']['sep'], $trow) . "\r\n";
             }
             file_put_contents($tparams['tocsv']['filepath'], $row);
             pmb_mysql_data_seek($res, 0);
             for ($i = 0; $i < $nbr_lignes; $i++) {
                 $trow = pmb_mysql_fetch_row($res);
                 if ($tparams['tocsv']['enclosure']) {
                     foreach ($trow as $k => $v) {
                         $trow[$k] = addcslashes($v, $tparams['tocsv']['enclosure']);
                     }
                     $row = $tparams['tocsv']['enclosure'] . implode($tparams['tocsv']['enclosure'] . $tparams['tocsv']['sep'] . $tparams['tocsv']['enclosure'], $trow) . $tparams['tocsv']['enclosure'] . "\r\n";
                 } else {
                     $row = implode($tparams['tocsv']['sep'], $trow) . "\r\n";
                 }
                 file_put_contents($tparams['tocsv']['filepath'], $row, FILE_APPEND);
             }
         }
         $result = array('name' => $name, 'report' => $report);
         return $result;
     }
     return array();
 }
function import($separateur, $dbh, $type_import)
{
    global $categorie, $codestat, $localisation;
    global $pmb_lecteurs_localises;
    //La structure du fichier texte doit être la suivante :
    //Code-barres ; Nom ; Prénom ; Rue ; Complément de rue ; Code postal ; Commune ; Téléphone ; Année de date de naissance ; Classe ; Sexe ; Téléphone 2 ; Mail ; Profession ; Message
    $requete = "SELECT duree_adhesion FROM empr_categ WHERE id_categ_empr='" . $categorie . "'";
    $resultat = pmb_mysql_query($requete, $dbh);
    if (pmb_mysql_num_rows($resultat)) {
        $duree = pmb_mysql_result($resultat, 0, 0);
    } else {
        $duree = 365;
    }
    $eleve_abrege = array("Num&eacute;ro identifiant", "Nom", "Prénom");
    $date_auj = date("Y-m-d", time());
    $date_an_proch = date("Y-m-d", time() + 3600 * 24 * $duree);
    //Upload du fichier
    if (!$_FILES['import_lec']['tmp_name']) {
        print "Cliquez sur Pr&eacute;c&eacute;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 &ecirc;tre t&eacute;l&eacute;charg&eacute;. Voici plus d'informations :<br />";
        print_r($_FILES) . "<p>";
    }
    $fichier = @fopen("./temp/" . basename($_FILES['import_lec']['tmp_name']), "r");
    if ($fichier) {
        while (!feof($fichier)) {
            //initialise la variable tableau, au cas où on ait pas toutes les colonnes dans le fichier csv
            $buffer = fgets($fichier, 4096);
            $buffer = pmb_mysql_escape_string($buffer);
            $tab = explode($separateur, $buffer);
            //Gestion du sexe
            switch ($tab[10][0]) {
                case M:
                    $sexe = 1;
                    break;
                case F:
                    $sexe = 2;
                    break;
                default:
                    $sexe = 0;
                    break;
            }
            if ($tab[8] != "0") {
                $password = $tab[8];
            } else {
                $password = "";
            }
            //pour éviter un saut de ligne dans les trois dernières colonnes qui sont facultatives
            $tab[12] = str_replace("\\r\\n", "", $tab[12]);
            $tab[13] = str_replace("\\r\\n", "", $tab[13]);
            $tab[14] = str_replace("\\r\\n", "", $tab[14]);
            // Traitement du lecteur
            $select = pmb_mysql_query("SELECT id_empr FROM empr WHERE empr_cb = '" . $tab[0] . "'", $dbh);
            $nb_enreg = pmb_mysql_num_rows($select);
            //Test si un numéro id est fourni, rejet si pas d'id avec message si au moins nom ou au moins prénom contient qqch
            //si pas d'id, pas de nom, pas de prénom, erreur muette : dernière ligne
            if ((!$tab[0] || $tab[0] == "") && !($tab[1] == "" && $tab[2] == "" && $tab[3] == "" && $tab[4] == "")) {
                print "<b> Lecteur non pris en compte car \"Num&eacute;ro identifiant\" non renseign&eacute; : </b><br />";
                for ($i = 0; $i < 3; $i++) {
                    print $eleve_abrege[$i] . " : " . $tab[$i] . ", ";
                }
                print "<br />";
                $nb_enreg = 2;
            }
            $login = cre_login($tab[1], $tab[2], $dbh);
            switch ($nb_enreg) {
                case 0:
                    //Ce lecteur n'est pas enregistré
                    $req_insert = "INSERT INTO empr(empr_cb, empr_nom, empr_prenom, empr_adr1, empr_adr2, empr_cp, empr_ville, ";
                    $req_insert .= "empr_tel1, empr_year, empr_categ, empr_codestat, empr_creation, empr_sexe,  ";
                    $req_insert .= "empr_login, empr_password, empr_date_adhesion, empr_date_expiration, empr_tel2, empr_mail, empr_prof, empr_msg, empr_location) ";
                    $req_insert .= "VALUES ('{$tab['0']}','{$tab['1']}','{$tab['2']}','{$tab['3']}', '{$tab['4']}', '{$tab['5']}', ";
                    $req_insert .= "'{$tab['6']}', '{$tab['7']}', '{$tab['8']}', {$categorie}, {$codestat}, '{$date_auj}', '{$sexe}', ";
                    $req_insert .= "'{$login}', '{$password}', '{$date_auj}', '{$date_an_proch}','{$tab['11']}','{$tab['12']}','{$tab['13']}','{$tab['14']}','{$localisation}')";
                    $insert = pmb_mysql_query($req_insert, $dbh);
                    if (!$insert) {
                        print "<b>Echec de la cr&eacute;ation du lecteur suivant (Erreur : " . pmb_mysql_error() . ") : </b><br />";
                        for ($i = 0; $i < 3; $i++) {
                            print $eleve_abrege[$i] . " : " . $tab[$i] . ", ";
                        }
                        print "<br />";
                    } else {
                        emprunteur::update_digest($login, $password);
                        emprunteur::hash_password($login, $password);
                        $cpt_insert++;
                    }
                    gestion_groupe($tab[9], $tab[0], $dbh);
                    $j++;
                    break;
                case 1:
                    //Ce lecteur est déjà enregistré
                    $req_update = "UPDATE empr SET empr_nom = '{$tab['1']}', empr_prenom = '{$tab['2']}', empr_adr1 = '{$tab['3']}', ";
                    $req_update .= "empr_adr2 = '{$tab['4']}', empr_cp = '{$tab['5']}', empr_ville = '{$tab['6']}', ";
                    $req_update .= "empr_tel1 = '{$tab['7']}', empr_year = '{$tab['8']}', empr_categ = '" . $categorie . "', empr_codestat = '{$codestat}', empr_modif = '{$date_auj}', empr_sexe = '{$sexe}', ";
                    // on ne modifie ni login ni mot de passe pour éviter d'écraser un mot de passe changé par le lecteur
                    // $req_update .= "empr_login = $login, empr_password= $tab[8], ";
                    $req_update .= "empr_date_adhesion = '{$date_auj}', empr_date_expiration = '{$date_an_proch}', empr_tel2 = '{$tab['11']}', empr_location='{$localisation}' ";
                    $req_update .= "WHERE empr_cb = '{$tab['0']}'";
                    $update = pmb_mysql_query($req_update, $dbh);
                    if (!$update) {
                        print "<b>Echec de la modification du lecteur suivant (Erreur : " . pmb_mysql_error() . ") : </b><br />";
                        for ($i = 0; $i < 3; $i++) {
                            print $eleve_abrege[$i] . " : " . $tab[$i] . ", ";
                        }
                        print "<br />";
                    } else {
                        if ($tab[12] != "") {
                            $req_update_mail = "UPDATE empr SET empr_mail='{$tab['12']}' WHERE empr_cb = '{$tab['0']}'";
                            $update_mail = pmb_mysql_query($req_update_mail, $dbh);
                            if (!$update_mail) {
                                print "<b>Echec de la modification du mail du lecteur suivant (Erreur : " . pmb_mysql_error() . ") : </b><br />";
                                for ($i = 0; $i < 3; $i++) {
                                    print $eleve_abrege[$i] . " : " . $tab[$i] . ", ";
                                }
                                print "<br />";
                            }
                            $tab[12] = "";
                        }
                        if ($tab[13] != "") {
                            $req_update_prof = "UPDATE empr SET empr_prof='{$tab['13']}' WHERE empr_cb = '{$tab['0']}'";
                            $update_prof = pmb_mysql_query($req_update_prof, $dbh);
                            if (!$update_prof) {
                                print "<b>Echec de la modification de la profession lecteur suivant (Erreur : " . pmb_mysql_error() . ") : </b><br />";
                                for ($i = 0; $i < 3; $i++) {
                                    print $eleve_abrege[$i] . " : " . $tab[$i] . ", ";
                                }
                                print "<br />";
                            }
                            $tab[13] = "";
                        }
                        if ($tab[14] != "") {
                            $req_update_msg = "UPDATE empr SET empr_msg='{$tab['14']}' WHERE empr_cb = '{$tab['0']}'";
                            $update_msg = pmb_mysql_query($req_update_msg, $dbh);
                            if (!$update_msg) {
                                print "<b>Echec de la modification du message sur le lecteur suivant (Erreur : " . pmb_mysql_error() . ") : </b><br />";
                                for ($i = 0; $i < 3; $i++) {
                                    print $eleve_abrege[$i] . " : " . $tab[$i] . ", ";
                                }
                                print "<br />";
                            }
                            $tab[14] = "";
                        }
                        $cpt_maj++;
                    }
                    gestion_groupe($tab[9], $tab[0], $dbh);
                    $j++;
                    break;
                case 2:
                    break;
                default:
                    print "<b>Echec pour le lecteur suivant (Erreur : " . pmb_mysql_error() . ") : </b><br />";
                    for ($i = 0; $i < 3; $i++) {
                        print $eleve_abrege[$i] . " : " . $tab[$i] . ", ";
                    }
                    print "<br />";
                    break;
            }
        }
        if ($type_import == 'maj_complete') {
            $requete_empr_groupe_delete = "DELETE FROM empr_groupe LEFT JOIN empr ON empr_id=id_empr LEFT JOIN pret ON pret_idempr=id_empr WHERE pret_idempr IS NULL and empr_modif != '{$date_auj}' and empr_categ={$categorie} and empr_codestat= {$codestat}";
            if ($pmb_lecteurs_localises == "1") {
                $requete_empr_where .= " and empr_location={$localisation}";
            }
            pmb_mysql_query($requete_empr_groupe_delete . $requete_empr_where, $dbh);
            $requete_list_empr_delete = "SELECT id_empr FROM empr LEFT JOIN pret ON pret_idempr=id_empr \n        \t\tWHERE pret_idempr IS NULL and empr_modif != '{$date_auj}' and empr_categ={$categorie} and empr_codestat= {$codestat} {$requete_empr_where} ";
            $list_empr_delete = pmb_mysql_query($requete_list_empr_delete, $dbh);
            while ($empr_delete = pmb_mysql_fetch_array($list_empr_delete)) {
                emprunteur::del_empr($empr_delete["id_empr"]);
            }
        }
        //Affichage des insert et update
        print "<br />";
        if ($cpt_delete) {
            print $cpt_delete . " lecteurs supprim&eacute;s. <br />";
        }
        if ($cpt_insert) {
            print $cpt_insert . " lecteurs cr&eacute;&eacute;s. <br />";
        }
        if ($cpt_maj) {
            print $cpt_maj . " lecteurs modifi&eacute;s. <br />";
        }
        fclose($fichier);
    }
}
function import_eleves($separateur, $dbh, $type_import, $commune)
{
    global $code_categorie;
    global $code_statistique;
    $code_categorie = 12;
    $code_statistique = 3;
    $eleve_abrege = array("Numéro identifiant", "Nom", "Prénom");
    $date_auj = date("Y-m-d", time());
    $date_an_proch = date("Y-m-d", time() + 3600 * 24 * 30.42 * 12);
    //Upload du fichier
    if (!$_FILES['import_lec']['tmp_name']) {
        print "Cliquez sur Pr&eacute;c&eacute;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) {
        if ($type_import == 'maj_complete') {
            //Vide la table empr_groupe des élèves qui n'ont pas de prêts en cours et qui sont localisé à la commune sélectionnée et de categorie collectivité eleves
            $req_select_verif_pret = "SELECT id_empr FROM empr left join pret on id_empr=pret_idempr WHERE pret_idempr is null and empr_location= '{$commune}' and empr_categ = '{$code_categorie}' ";
            $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
                $req_delete = "DELETE FROM empr_groupe WHERE empr_id = '" . $verif_pret["id_empr"] . "'";
                pmb_mysql_query($req_delete);
            }
            //$delete_empr_groupe = pmb_mysql_query("DELETE FROM empr_groupe",$dbh);
            //Supprime les élèves qui n'ont pas de prêts en cours et qui sont localisé à la commune sélectionnée et de categorie collectivité eleves
            $req_select_verif_pret = "SELECT id_empr FROM empr left join pret on id_empr=pret_idempr WHERE pret_idempr is null and empr_location= '{$commune}' and empr_categ = '{$code_categorie}' ";
            $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
                emprunteur::del_empr($verif_pret["id_empr"]);
            }
        }
        while (!feof($fichier)) {
            $buffer = fgets($fichier, 4096);
            $buffer = pmb_mysql_escape_string($buffer);
            $tab = explode($separateur, $buffer);
            //Gestion du sexe
            switch ($tab[10][0]) {
                case M:
                    $sexe = 1;
                    break;
                case F:
                    $sexe = 2;
                    break;
                default:
                    $sexe = 0;
                    break;
            }
            // Traitement de l'élève
            $select = pmb_mysql_query("SELECT id_empr FROM empr WHERE empr_cb = '" . $tab[0] . "'", $dbh);
            $nb_enreg = pmb_mysql_num_rows($select);
            //Test si un numéro id est fourni
            if (!$tab[0] || $tab[0] == "") {
                print "<b> Elève non pris en compte car \"Numéro identifiant\" non renseigné : </b><br />";
                for ($i = 0; $i < 3; $i++) {
                    print $eleve_abrege[$i] . " : " . $tab[$i] . ", ";
                }
                print "<br />";
                $nb_enreg = 2;
            }
            $login = cre_login($tab[1], $tab[2], $dbh);
            switch ($nb_enreg) {
                case 0:
                    //Ce élève n'est pas enregistré
                    $req_insert = "INSERT INTO empr(empr_cb, empr_nom, empr_prenom, empr_adr1, empr_adr2, empr_cp, empr_ville, ";
                    $req_insert .= "empr_tel1, empr_year, empr_categ, empr_codestat, empr_creation, empr_sexe,  ";
                    $req_insert .= "empr_login, empr_password, empr_date_adhesion, empr_date_expiration, empr_location) ";
                    $req_insert .= "VALUES ('{$tab['0']}','{$tab['1']}','{$tab['2']}','{$tab['3']}', '{$tab['4']}', '{$tab['5']}', ";
                    //Vérifier dans la table empr_categ si id_categ_empr 1 = élèves
                    //Vérifier dans la table empr_codestat si idcode 2 = école    Sinon, changer les valeurs
                    $req_insert .= "'{$tab['6']}', '{$tab['7']}', '{$tab['8']}', {$code_categorie} , '3', '{$date_auj}', '{$sexe}', ";
                    $req_insert .= "'{$login}', '{$tab['8']}', '{$date_auj}', '{$date_an_proch}' , '{$commune}' )";
                    $insert = pmb_mysql_query($req_insert, $dbh);
                    if (!$insert) {
                        print "<b>Echec de la création de l'élève suivant (Erreur : " . pmb_mysql_error() . ") : </b><br />";
                        print $code_categorie;
                        print "3";
                        print "{$location}";
                        print "{$user}";
                        for ($i = 0; $i < 3; $i++) {
                            print $eleve_abrege[$i] . " : " . $tab[$i] . ", ";
                        }
                        print "<br />";
                    } else {
                        emprunteur::update_digest($login, $tab[8]);
                        emprunteur::hash_password($login, $tab[8]);
                        $cpt_insert++;
                    }
                    gestion_groupe($tab[9], $tab[0], $dbh);
                    $j++;
                    break;
                case 1:
                    //Ce élève est déjà enregistré
                    $req_update = "UPDATE empr SET empr_nom = '{$tab['1']}', empr_prenom = '{$tab['2']}', empr_adr1 = '{$tab['3']}', ";
                    $req_update .= "empr_adr2 = '{$tab['4']}', empr_cp = '{$tab['5']}', empr_ville = '{$tab['6']}', ";
                    //Vérifier dans la table empr_categ si id_categ_empr 1 = élèves    Vérifier dans la table empr_codestat si idcode 2 = école    Sinon, changer les valeurs
                    $req_update .= "empr_tel1 = '{$tab['7']}', empr_year = '{$tab['8']}', empr_categ = '{$code_categorie} ', empr_codestat = '3', empr_modif = '{$date_auj}', empr_sexe = '{$sexe}', ";
                    $req_update .= "empr_login = '******', empr_password= '******'8']}', ";
                    $req_update .= "empr_date_adhesion = '{$date_auj}', empr_date_expiration = '{$date_an_proch}', empr_location = '{$commune}'";
                    $req_update .= "WHERE empr_cb = '{$tab['0']}'";
                    $update = pmb_mysql_query($req_update, $dbh);
                    if (!$update) {
                        print "<b>Echec de la modification de l'élève suivant (Erreur : " . pmb_mysql_error() . ") : </b><br />";
                        print $path;
                        print '$code_categorie';
                        print "3";
                        print "{$location}";
                        print "{$user}";
                        for ($i = 0; $i < 3; $i++) {
                            print $eleve_abrege[$i] . " : " . $tab[$i] . ", ";
                        }
                        print "<br />";
                    } else {
                        emprunteur::update_digest($login, $tab[8]);
                        emprunteur::hash_password($login, $tab[8]);
                        $cpt_maj++;
                    }
                    gestion_groupe($tab[9], $tab[0], $dbh);
                    $j++;
                    break;
                case 2:
                    break;
                default:
                    print $path;
                    print $code_categorie;
                    print 3;
                    print $location;
                    echo $user;
                    print "<b>Echec pour l'élève suivant (Erreur : " . pmb_mysql_error() . ") : </b><br />";
                    for ($i = 0; $i < 3; $i++) {
                        print $eleve_abrege[$i] . " : " . $tab[$i] . ", ";
                    }
                    print "<br />";
                    break;
            }
        }
        //Affichage des insert et update
        print "<br />_____________________<br />";
        if ($cpt_insert) {
            print $cpt_insert . " Elèves créés. <br />";
        }
        if ($cpt_maj) {
            print $cpt_maj . " Elèves modifiés. <br />";
        }
        fclose($fichier);
    }
}