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(); } check_token(); //===================================== // AJOUT: boireaus //$debug=1; $debug=0; if(isset($_GET['debug'])){ if($_GET['debug']=="1"){ $debug=1; } else{ $debug=0; } } function affiche_debug($texte){ global $debug; if($debug==1){ echo "$texte\n"; } } //$debug=1; //===================================== //**************** EN-TETE ***************** $titre_page = "Outil d'initialisation de l'année : Importation des relations professeurs/classes/matières"; require_once("../lib/header.inc.php"); //**************** FIN EN-TETE ***************** ?>

Retour Retour accueil initialisation

Cinquième phase d'initialisation" . "
Affectation des matières à chaque professeur," . "
Affectation des professeurs dans chaque classe," . "
Importation des options suivies par les élèves" . "

"; echo "

Première étape : affectation des matières à chaque professeur et affectation des professeurs dans chaque classe.

"; if (!isset($step1)) { $test = old_mysql_result(mysqli_query($GLOBALS["mysqli"], "SELECT count(*) FROM j_groupes_professeurs"),0); if ($test != 0) { echo "

ATTENTION ...
"; echo "Des données concernant l'affectation de professeurs dans des classes sont actuellement présentes dans la base GEPI

"; echo "

Si vous poursuivez la procédure ces données seront effacées.

"; echo "
"; echo add_token_field(); echo ""; echo ""; echo "
"; die(); } } if (!isset($is_posted)) { $del = @mysqli_query($GLOBALS["mysqli"], "DELETE FROM j_groupes_professeurs"); $del = @mysqli_query($GLOBALS["mysqli"], "DELETE FROM j_professeurs_matieres"); // Ménage sur l'ordre des groupes dans l'affichage simplifié prof: // Sinon, on peut se retrouver avec des rangs aberrants liés à des groupes qui n'existent plus dans la table groupes. $sql="DELETE FROM preferences WHERE name LIKE 'accueil_simpl_id_groupe_order_%';"; $del=mysqli_query($GLOBALS["mysqli"], $sql); echo "

Importation des fichiers F_men.csv et F_gpd.csv contenant les données de relations entre professeurs, matière et classes."; echo "

"; echo add_token_field(); echo "

Veuillez préciser le nom complet du fichier F_men.csv."; echo "

"; echo "

Veuillez préciser le nom complet du fichier F_gpd.csv."; echo "

"; echo ""; echo ""; echo "

"; echo "

"; } else { $dbf_file = isset($_FILES["dbf_file"]) ? $_FILES["dbf_file"] : NULL; $dbf_file2 = isset($_FILES["dbf_file2"]) ? $_FILES["dbf_file2"] : NULL; if ((mb_strtoupper($dbf_file['name']) == "F_MEN.CSV") or (mb_strtoupper($dbf_file2['name']) == "F_GPD.CSV")) { //$fp = @dbase_open($dbf_file['tmp_name'], 0); //$fp2 = @dbase_open($dbf_file2['tmp_name'], 0); $fp = fopen($dbf_file['tmp_name'],"r"); $fp2 = fopen($dbf_file2['tmp_name'],"r"); if (!$fp) { //echo "

Impossible d'ouvrir le fichier F_MEN.DBF !

"; //@dbase_close($fp2); echo "

Impossible d'ouvrir le fichier F_MEN.CSV !

"; fclose($fp2); echo "Cliquer ici pour recommencer !

"; } else if (!$fp2) { //echo "

Impossible d'ouvrir le fichier F_GPD.DBF !

"; //@dbase_close($fp); echo "

Impossible d'ouvrir le fichier F_GPD.CSV !

"; fclose($fp); echo "Cliquer ici pour recommencer !

"; } else { // on constitue le tableau des champs à extraire dans $fp2 $tabchamps2 = array("GROCOD","DIVCOD"); //$nblignes2 = dbase_numrecords($fp2); //number of rows unset($en_tete); $nblignes2=0; while (!feof($fp2)) { $ligne = fgets($fp2, 4096); if($nblignes2==0){ // Quand on enregistre en CSV des fichiers DBF de GEP avec OpenOffice, les champs sont renommés avec l'ajout de ',...' en fin de nom de champ. // On ne retient pas ces ajouts pour $en_tete $temp=explode(";",$ligne); for($i=0;$iLe fichier F_GPD.DBF sélectionné n'est pas valide !
"; echo "Cliquer ici pour recommencer !

"; die(); } $nb = 0; foreach($temp as $key => $val){ $en_tete[$nb] = "$key"; affiche_debug("\$en_tete[$nb]=$en_tete[$nb]
\n"); $nb++; } affiche_debug("==========================
\n"); */ // On range dans tabindice les indices des champs retenus // On repère l'indice des colonnes GROCOD et DIVCOD $cpt_tmp=0; for ($k = 0; $k < count($tabchamps2); $k++) { for ($i = 0; $i < count($en_tete); $i++) { //if ($en_tete[$i] == $tabchamps2[$k]) { if (trim($en_tete[$i]) == $tabchamps2[$k]) { //$tabindice2[] = $i; //affiche_debug("\$tabindice2[]=$i
\n"); $tabindice2[$cpt_tmp] = $i; affiche_debug("\$tabindice2[$cpt_tmp]=$i
\n"); $cpt_tmp++; } } } affiche_debug("==========================
\n"); //========================= $fp2=fopen($dbf_file2['tmp_name'],"r"); // On lit une ligne pour passer la ligne d'entête: $ligne = fgets($fp2, 4096); //========================= for($k = 1; ($k < $nblignes2+1); $k++){ // Pour chaque ligne du fichier F_GPD, on récupère dans $affiche[0] le GROCOD et dans $affiche[1] le DIVCOD if(!feof($fp2)){ $ligne = fgets($fp2, 4096); if(trim($ligne)!=""){ $tabligne=explode(";",$ligne); for($i = 0; $i < count($tabchamps2); $i++) { //$affiche[$i] = dbase_filter(trim($ligne[$tabindice2[$i]])); $affiche[$i] = nettoyer_caracteres_nom($tabligne[$tabindice2[$i]], "an", "_ -", ""); affiche_debug("\$affiche[$i]=$affiche[$i]
\n"); } $tab_groupe[$affiche[0]] = $affiche[1]; affiche_debug("\$tab_groupe[\$affiche[0]]=\$tab_groupe[$affiche[0]]=".$tab_groupe[$affiche[0]]."
\n"); //======================================================= // AJOUT: boireaus $tab_groupe2[$affiche[0]][] = $affiche[1]; affiche_debug("\$tab_groupe2[\$affiche[0]][]=\$tab_groupe2[$affiche[0]][]=".$affiche[1]."
\n"); //======================================================= } } } //dbase_close($fp2); fclose($fp2); // Jusque là, on s'est arrangé pour renseigner un tableau du type: // $tab_groupe[GROCOD] = DIVCOD; // Du coup, on ne récupère qu'une seule des classes... la dernière de la liste des classes/membres du groupe. // Corrigé avec le tab_groupe2 affiche_debug("=======================================================
\n"); affiche_debug("On a fini l'épluchage du fichier F_GPD
\n"); affiche_debug("=======================================================
\n"); unset($en_tete2); // on range les classes existantes dans un tableau: $req = mysqli_query($GLOBALS["mysqli"], "select id, classe from classes"); $nb_classes = mysqli_num_rows($req); $n = 0; // on constitue le tableau des champs à extraire $tabchamps = array("MATIMN","NUMIND","ELSTCO"); //$nblignes = dbase_numrecords($fp); //number of rows $nblignes=0; while (!feof($fp)) { $ligne = fgets($fp, 4096); if($nblignes==0){ // Quand on enregistre en CSV des fichiers DBF de GEP avec OpenOffice, les champs sont renommés avec l'ajout de ',...' en fin de nom de champ. // On ne retient pas ces ajouts pour $en_tete $temp=explode(";",$ligne); //echo "\$ligne=".$ligne."
\n"; //echo "sizeof(\$temp)=".sizeof($temp)."
\n"; for($i=0;$i\n"); $en_tete2[$i]=$temp2[0]; affiche_debug("\$en_tete2[$i]=".$en_tete2[$i]."
\n"); } $nbchamps=sizeof($en_tete2); affiche_debug("\$nbchamps=".$nbchamps."
\n"); for($i=0;$i\n"); } } $nblignes++; } fclose ($fp); // On range dans tabindice les indices des champs retenus affiche_debug("count(\$tabchamps)=".count($tabchamps)."
\n"); //affiche_debug("count(\$en_tete)=".count($en_tete)."
\n"); affiche_debug("count(\$en_tete2)=".count($en_tete2)."
\n"); $cpt_tmp=0; for ($k = 0; $k < count($tabchamps); $k++) { for ($i = 0; $i < count($en_tete2); $i++) { if (trim($en_tete2[$i]) == $tabchamps[$k]) { $tabindice[$cpt_tmp]=$i; affiche_debug("\$tabindice[$cpt_tmp]=$i
\n"); $cpt_tmp++; } } } affiche_debug("==========================
\n"); affiche_debug("==========================
\n"); //========================= $fp=fopen($dbf_file['tmp_name'],"r"); // On lit une ligne pour passer la ligne d'entête: $ligne = fgets($fp, 4096); //========================= $nb_reg_no = 0; for($k = 1; ($k < $nblignes+1); $k++){ if(!feof($fp)){ $ligne = my_ereg_replace('"','',fgets($fp, 4096)); if(trim($ligne)!=""){ $tabligne=explode(";",$ligne); for($i = 0; $i < count($tabchamps); $i++) { //$affiche[$i] = dbase_filter(trim($ligne[$tabindice[$i]])); //affiche_debug("\$affiche[$i]=dbase_filter(trim(\$ligne[$tabindice[$i]]))=$affiche[$i]
\n"); $affiche[$i] = nettoyer_caracteres_nom($tabligne[$tabindice[$i]], "an", "_ -", ""); affiche_debug("\$affiche[$i]=dbase_filter(trim(\$tabligne[".$tabindice[$i]."]))=".$affiche[$i]."
\n"); } affiche_debug("==========================
\n"); $req = mysqli_query($GLOBALS["mysqli"], "select col1 from tempo2 where col2 = '$affiche[1]'"); affiche_debug("On recherche si un prof assure le cours correspondant au groupe: select col1 from tempo2 where col2 = '$affiche[1]'
\n"); $login_prof = @old_mysql_result($req, 0, 'col1'); // A REVOIR... IL FAUDRAIT PEUT-ETRE CREER QUAND MEME LE GROUPE POUR L'ASSOCIATION groupe/matiere/classe même si il n'y a pas encore de prof (dans le F_MEN) if ($login_prof != '') { // On relie les profs aux matières affiche_debug("Un (au moins) prof trouvé: $login_prof
\n"); $verif = mysqli_query($GLOBALS["mysqli"], "select id_professeur from j_professeurs_matieres where (id_matiere='$affiche[0]' and id_professeur='$login_prof')"); affiche_debug("select id_professeur from j_professeurs_matieres where (id_matiere='$affiche[0]' and id_professeur='$login_prof')
\n"); $resverif = mysqli_num_rows($verif); if($resverif == 0) { // On arrive jusque là. $req = mysqli_query($GLOBALS["mysqli"], "insert into j_professeurs_matieres set id_matiere='$affiche[0]', id_professeur='$login_prof', ordre_matieres=''"); affiche_debug("insert into j_professeurs_matieres set id_matiere='$affiche[0]', id_professeur='$login_prof', ordre_matieres=''
\n"); //echo "Ajout de la correspondance prof/matière suivante: $login_prof/$affiche[0]
\n"; echo "

Ajout de la correspondance prof/matière suivante: $login_prof/$affiche[0]
\n"; if(!$req) $nb_reg_no++; } // On relie prof, matières et classes dans un nouveau groupe de Gepi // On vide le tableau de la liste des classes associées au groupe: unset($tabtmp); $test = mysqli_query($GLOBALS["mysqli"], "select id from classes where classe='$affiche[2]'"); // On initialise le tableau pour que par défaut il contienne $affiche[2] au cas où ce serait une classe... $tabtmp[0]=$affiche[2]; affiche_debug("select id from classes where classe='$affiche[2]'
\n"); $nb_test = mysqli_num_rows($test) ; if ($nb_test == 0) { // dans ce cas, $affiche[2] désigne un groupe // on convertit le groupe en classe /* $affiche[2] = $tab_groupe[$affiche[2]]; echo "\$affiche[2] = \$tab_groupe[\$affiche[2]] = \$tab_groupe[$affiche[2]] = $affiche[2];
\n"; $test = mysql_query("select id from classes where classe='$affiche[2]'"); echo "select id from classes where classe='$affiche[2]'
\n"; */ // MODIF: boireaus // On modifie/remplit le tableau $tabtmp avec la liste des classes associées au groupe. for($i=0;$i\n"); } } // On boucle sur la liste des classes: // On initialise un témoin pour ne pas recréer le groupe pour la deuxième, troisième,... classe: $temoin_groupe_deja_cree="non"; for($i=0;$i\n"); if ($id_classe != '') { $sql="SELECT classe FROM classes WHERE id='$id_classe'"; $res_classe_tmp=mysqli_query($GLOBALS["mysqli"], $sql); $lig_classe_tmp=mysqli_fetch_object($res_classe_tmp); $classe=$lig_classe_tmp->classe; //echo "

\n"; $verif = mysqli_query($GLOBALS["mysqli"], "select g.id from " . "groupes g, j_groupes_matieres jgm, j_groupes_professeurs jgp, j_groupes_classes jgc " . "where (" . "g.id = jgm.id_groupe and " . "jgm.id_matiere='$affiche[0]' and " . "jgm.id_groupe = jgp.id_groupe and " . "jgp.login = '$login_prof' and " . "jgp.id_groupe = jgc.id_groupe and " . "jgc.id_classe='$id_classe')"); affiche_debug("select g.id from " . "groupes g, j_groupes_matieres jgm, j_groupes_professeurs jgp, j_groupes_classes jgc " . "where (" . "g.id = jgm.id_groupe and " . "jgm.id_matiere='$affiche[0]' and " . "jgm.id_groupe = jgp.id_groupe and " . "jgp.login = '$login_prof' and " . "jgp.id_groupe = jgc.id_groupe and " . "jgc.id_classe='$id_classe')
\n"); $resverif = mysqli_num_rows($verif); if($resverif == 0) { // Avant d'enregistrer, il faut quand même vérifier si le groupe existe déjà ou pas // ... pour cette classe... $verif2 = mysqli_query($GLOBALS["mysqli"], "select g.id from " . "groupes g, j_groupes_matieres jgm, j_groupes_classes jgc " . "where (" . "g.id = jgm.id_groupe and " . "jgm.id_matiere='$affiche[0]' and " . "jgm.id_groupe = jgc.id_groupe and " . "jgc.id_classe='$id_classe')"); affiche_debug("select g.id from " . "groupes g, j_groupes_matieres jgm, j_groupes_classes jgc " . "where (" . "g.id = jgm.id_groupe and " . "jgm.id_matiere='$affiche[0]' and " . "jgm.id_groupe = jgc.id_groupe and " . "jgc.id_classe='$id_classe')
\n"); $resverif2 = mysqli_num_rows($verif2); if ($resverif2 == 0) { affiche_debug("Le groupe n'existe pas encore pour la classe \$id_classe=$id_classe
\n"); // ordre d'affichage par défaut : $priority = sql_query("select priority from matieres where matiere='".$affiche[0]."'"); if ($priority == "-1") $priority = "0"; $matiere_nom = old_mysql_result(mysqli_query($GLOBALS["mysqli"], "SELECT nom_complet FROM matieres WHERE matiere = '" . $affiche[0] . "'"), 0); if($temoin_groupe_deja_cree=="non"){ $res = mysqli_query($GLOBALS["mysqli"], "insert into groupes set name = '" . $affiche[0] . "', description = '" . $matiere_nom . "', recalcul_rang = 'y'"); affiche_debug("insert into groupes set name = '" . $affiche[0] . "', description = '" . $matiere_nom . "', recalcul_rang = 'y'
\n"); $group_id = ((is_null($___mysqli_res = mysqli_insert_id($GLOBALS["mysqli"]))) ? false : $___mysqli_res); $temoin_groupe_deja_cree=$group_id; echo "

\n"; //echo "Création d'un groupe pour la matière $affiche[0], \n"; echo "Création d'un groupe (n°$group_id) pour la matière $affiche[0], \n"; $res2 = mysqli_query($GLOBALS["mysqli"], "insert into j_groupes_matieres set id_groupe = '" . $group_id . "', id_matiere = '" . $affiche[0] . "'"); affiche_debug("insert into j_groupes_matieres set id_groupe = '" . $group_id . "', id_matiere = '" . $affiche[0] . "'
\n"); $res4 = mysqli_query($GLOBALS["mysqli"], "insert into j_groupes_professeurs set id_groupe = '" . $group_id . "', login ='" . $login_prof . "'"); affiche_debug("insert into j_groupes_professeurs set id_groupe = '" . $group_id . "', login ='" . $login_prof . "'
\n"); echo "le professeur $login_prof\n"; } else{ $group_id=$temoin_groupe_deja_cree; affiche_debug("Groupe déjà créé avec \$group_id=$group_id
"); } $res3 = mysqli_query($GLOBALS["mysqli"], "insert into j_groupes_classes set id_groupe = '" . $group_id . "', id_classe = '" . $id_classe . "', priorite = '" . $priority . "', coef = '0'"); affiche_debug("insert into j_groupes_classes set id_groupe = '" . $group_id . "', id_classe = '" . $id_classe . "', priorite = '" . $priority . "', coef = '0'
\n"); /* $sql="SELECT classe FROM classes WHERE id='$id_classe'"; $res_classe_tmp=mysql_query($sql); $lig_classe_tmp=mysql_fetch_object($res_classe_tmp); echo " et la classe $lig_classe_tmp->classe.
\n"; */ echo " et la classe $classe.
\n"; //$res4 = mysql_query("insert into j_groupes_professeurs set id_groupe = '" . $group_id . "', login ='" . $login_prof . "'"); //echo "insert into j_groupes_professeurs set id_groupe = '" . $group_id . "', login ='" . $login_prof . "'
\n"; // On ajoute tous les élèves de la classe considérée aux groupes. On enlèvera ceux qui ne suivent pas les enseignements // à la prochaine étape $get_eleves = mysqli_query($GLOBALS["mysqli"], "SELECT distinct(login) FROM j_eleves_classes WHERE id_classe = '" . $id_classe . "'"); $nb_eleves = mysqli_num_rows($get_eleves); affiche_debug("\$nb_eleves=$nb_eleves
\n"); $nb_per = old_mysql_result(mysqli_query($GLOBALS["mysqli"], "SELECT count(*) FROM periodes WHERE id_classe = '" . $id_classe . "'"), 0); affiche_debug("\$nb_per=$nb_per
\n"); // DEBUG :: echo "
Classe : " . $id_classe . "
Nb el. : " . $nb_eleves . "
Nb per.: " . $nb_per . "

"; if($nb_eleves>0){ echo "Ajout à ce groupe des élèves suivants: "; for ($m=0;$m<$nb_eleves;$m++) { $e_login = old_mysql_result($get_eleves, $m, "login"); for ($n=1;$n<=$nb_per;$n++) { $insert_e = mysqli_query($GLOBALS["mysqli"], "INSERT into j_eleves_groupes SET id_groupe = '" . $group_id . "', login = '" . $e_login . "', periode = '" . $n . "'"); affiche_debug("INSERT into j_eleves_groupes SET id_groupe = '" . $group_id . "', login = '" . $e_login . "', periode = '" . $n . "'
\n"); } if($m==0){ echo "$e_login"; } else{ echo ", $e_login"; } } echo "
\n"; } else{ echo "Aucun élève dans ce groupe???
\n"; } } else { // Si on est là, c'est que le groupe existe déjà, mais que le professeur que l'on // est en train de traiter n'est pas encore associé au groupe // C'est le cas de deux professeurs pour un même groupe/classe dans une matière. affiche_debug("Le groupe existe déjà pour la classe \$id_classe=$id_classe, on ajoute le professeur $login_prof au groupe:
\n"); $group_id = old_mysql_result($verif2, 0); $res = mysqli_query($GLOBALS["mysqli"], "insert into j_groupes_professeurs set id_groupe = '" . $group_id . "', login ='" . $login_prof . "'"); affiche_debug("insert into j_groupes_professeurs set id_groupe = '" . $group_id . "', login ='" . $login_prof . "'
\n"); echo "Ajout de $login_prof à un groupe existant (plus d'un professeur pour ce groupe).
\n"; } } //echo "

\n"; } } } } affiche_debug("===================================================
\n"); } } //dbase_close($fp); fclose($fp); if ($nb_reg_no != 0) { echo "

Lors de l'enregistrement des données il n'y a eu $nb_reg_no erreurs. Essayez de trouvez la cause de l'erreur et recommencez la procédure avant de passer à l'étape suivante."; } else { echo "

L'importation des relations professeurs/matières et professeurs/classes dans la base GEPI a été effectuée avec succès !
Vous pouvez procéder à l'étape suivante d'importation des options suivies par les élèves.

"; } echo "

Importer les options suivies par les élèves

"; } } else if ((trim($dbf_file['name'])=='') or (trim($dbf_file2['name'])=='')) { echo "

Veuillez préciser les fichiers !
"; echo "Cliquer ici pour recommencer !

"; } else { echo "

Fichier(s) sélectionné(s) non valide(s) !
"; echo "Cliquer ici pour recommencer !

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