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(); } /* if($_SESSION['statut']!='administrateur') { header("Location: ../logout.php?auto=1"); die(); } */ check_token(); //=========================================== $step1=isset($_POST['step1']) ? $_POST['step1'] : (isset($_GET['step1']) ? $_GET['step1'] : NULL); $suite=isset($_GET['suite']) ? $_GET['suite'] : NULL; //===================================== // AJOUT: boireaus //$debug=1; $debug=0; if(isset($_GET['debug'])){ if($_GET['debug']=="1"){ $debug=1; } else{ $debug=0; } } //$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 ***************** require_once("init_xml_lib.php"); ?>

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 "

Les tables vidées seront : 'j_groupes_professeurs' et 'j_professeurs_matieres'

\n"; echo "
\n"; echo add_token_field(); echo "\n"; echo "\n"; echo "\n"; echo "
\n"; require("../lib/footer.inc.php"); die(); } } $tempdir=get_user_temp_directory(); if(!$tempdir){ echo "

Il semble que le dossier temporaire de l'utilisateur ".$_SESSION['login']." ne soit pas défini!?

\n"; // Il ne faut pas aller plus loin... // SITUATION A GERER } //if (!isset($is_posted)) { if (!isset($suite)) { $del = @mysqli_query($GLOBALS["mysqli"], "DELETE FROM j_groupes_professeurs"); $del = @mysqli_query($GLOBALS["mysqli"], "DELETE FROM j_professeurs_matieres"); $dest_file="../temp/".$tempdir."/sts.xml"; $sts_xml=simplexml_load_file($dest_file); if(!$sts_xml) { echo "

ECHEC du chargement du fichier avec simpleXML.

\n"; require("../lib/footer.inc.php"); die(); } $nom_racine=$sts_xml->getName(); if(my_strtoupper($nom_racine)!='STS_EDT') { echo "

ERREUR: Le fichier XML fourni n'a pas l'air d'être un fichier XML STS_EMP_<RNE>_<ANNEE>.
Sa racine devrait être 'STS_EDT'.

\n"; require("../lib/footer.inc.php"); die(); } echo "Analyse du fichier pour extraire les informations de la section DIVISIONS...
\n"; $divisions=array(); $i=0; foreach($sts_xml->DONNEES->STRUCTURE->DIVISIONS->children() as $objet_division) { $divisions[$i]=array(); foreach($objet_division->attributes() as $key => $value) { if(my_strtoupper($key)=='CODE') { $divisions[$i]['code']=preg_replace("/'/","",preg_replace('/"/','',trim($value))); //echo "

\$divisions[$i]['code']=".$divisions[$i]['code']."
"; break; } } // Champs de la division $j=0; foreach($objet_division->SERVICES->children() as $service) { foreach($service->attributes() as $key => $value) { $divisions[$i]["services"][$j][my_strtolower($key)]=trim($value); } $k=0; foreach($service->ENSEIGNANTS->children() as $enseignant) { foreach($enseignant->attributes() as $key => $value) { // if(my_strtoupper($key)=="ID") { $divisions[$i]["services"][$j]["enseignants"][$k]["id"]=trim($value); break; } } $k++; } $j++; } $i++; } $groupes=array(); $i=0; $tab_champs_groupe=array("LIBELLE_LONG"); foreach($sts_xml->DONNEES->STRUCTURE->GROUPES->children() as $objet_groupe) { $groupes[$i]=array(); foreach($objet_groupe->attributes() as $key => $value) { if(my_strtoupper($key)=='CODE') { $groupes[$i]['code']=preg_replace("/'/","",preg_replace('/"/','',trim($value))); break; } } // Champs enfants du groupe foreach($objet_groupe->children() as $key => $value) { if(in_array(my_strtoupper($key),$tab_champs_groupe)) { $groupes[$i][my_strtolower($key)]=preg_replace('/"/',"",trim($value)); } } if((!isset($groupes[$i]['libelle_long']))||($groupes[$i]['libelle_long']=='')) { $groupes[$i]['libelle_long']=$groupes[$i]['code']; } $j=0; foreach($objet_groupe->DIVISIONS_APPARTENANCE->children() as $objet_division_apartenance) { foreach($objet_division_apartenance->attributes() as $key => $value) { $groupes[$i]["divisions"][$j][my_strtolower($key)]=preg_replace('/"/',"",preg_replace("/'/","",trim($value))); } $j++; } $j=0; foreach($objet_groupe->SERVICES->children() as $service) { foreach($service->attributes() as $key => $value) { //$groupes[$i]["service"][$j][my_strtolower($key)]=trim($value); $groupes[$i]["grp"][$j][my_strtolower($key)]=trim($value); // Remarque: Pour les divisions, c'est ["services"] au lieu de ["service"] // $divisions[$i]["services"][$j][my_strtolower($key)]=trim($value); } $k=0; foreach($service->ENSEIGNANTS->children() as $enseignant) { foreach($enseignant->attributes() as $key => $value) { // if(my_strtoupper($key)=="ID") { //$groupes[$i]["service"][$j]["enseignant"][$k]["id"]=trim($value); $groupes[$i]["grp"][$j]["enseignant"][$k]["id"]=trim($value); break; } } $k++; } $j++; } $i++; } // On récupère les correspondances code/code_gestion sur les matières. $sql="SELECT code,code_gestion FROM temp_matieres_import"; $res_mat=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_mat)==0){ echo "

La table 'temp_matieres_import' est vide.
Auriez-vous sauté des étapes???

\n"; require("../lib/footer.inc.php"); die(); } $cpt=0; while($lig_mat=mysqli_fetch_object($res_mat)){ $matiere[$cpt]=array(); $matiere[$cpt]["code"]=$lig_mat->code; $matiere[$cpt]["code_gestion"]=$lig_mat->code_gestion; //echo "$lig_mat->code;$lig_mat->code_gestion
"; $cpt++; } function get_code_gestion_from_code($id_mat) { global $matiere; for($m=0;$m0) { $lig_mat=mysqli_fetch_object($res_mat); return $lig_mat->nom_complet; } } function creation_matiere($matiere_name, $matiere_nom_complet, $matiere_priorite=0, $matiere_categorie=0) { $sql="SELECT * from matieres WHERE matiere='$matiere_name';"; $verif=mysqli_query($GLOBALS["mysqli"], $sql);; if(mysqli_num_rows($verif)==0) { $sql="INSERT INTO matieres SET matiere='".mysqli_real_escape_string($GLOBALS["mysqli"], $matiere_name)."', nom_complet='".mysqli_real_escape_string($GLOBALS["mysqli"], $matiere_nom_complet)."', priority='".$matiere_priorite."', categorie_id = '" . $matiere_categorie . "',matiere_aid='n',matiere_atelier='n';"; $insert=mysqli_query($GLOBALS["mysqli"], $sql); } } creation_matiere('X_X_X','Matiere inconnue'); echo "
\n"; echo "

A cette étape, les élèves vont être affectés dans tous les groupes.
Ce n'est qu'à l'étape suivante que les options vont être prises en compte pour élaguer les groupes.

\n"; // A REVOIR... à moins que cette page soit déjà longue en traitement... $temoin_div_sans_services=0; $temoin_service_sans_enseignant=0; echo "

Création des groupes classe entière

\n"; for ($i=0;$iClasse de $classe

\n"; echo "
\n"; $sql="SELECT id FROM classes WHERE classe='$classe';"; $res_clas=mysqli_query($GLOBALS["mysqli"], $sql); $nb_clas=mysqli_num_rows($res_clas); if($nb_clas>1) { echo "

ANOMALIE: ".$nb_clas." classes ont le même nom: ".$classe."
Les groupes ne peuvent pas être importés pour ces classes.

\n"; } elseif($nb_clas==1) { $lig_clas=mysqli_fetch_object($res_clas); $id_classe=$lig_clas->id; // Récupération des élèves de la classe $sql="SELECT DISTINCT login FROM j_eleves_classes WHERE id_classe='$id_classe' ORDER BY login;"; $res_ele=mysqli_query($GLOBALS["mysqli"], $sql); $tab_ele=array(); if(mysqli_num_rows($res_ele)>0) { while($lig_ele=mysqli_fetch_object($res_ele)) { $tab_ele[]=$lig_ele->login; } } // Récupération des périodes de la classe $tab_per=array(); $periode_query=mysqli_query($GLOBALS["mysqli"], "SELECT * FROM periodes WHERE id_classe='$id_classe' ORDER BY num_periode"); $nb_periode=mysqli_num_rows($periode_query)+1; $j="1"; while ($j<$nb_periode) { $tab_per[]=$j; //echo "\$tab_per[]=$j
"; $j++; } $tab_clas=array($id_classe); if(!isset($divisions[$i]['services'])) { echo "

Aucun service n'est défini pour cette classe.
L'emploi du temps a-t-il été remonté vers STS?

\n"; $temoin_div_sans_services++; } else { for($j=0;$jCréation du groupe $descr_grp ($nom_grp) en $classe: "; if($id_groupe=create_group($nom_grp, $descr_grp, $mat, $tab_clas)) { echo "$id_groupe"; //echo "
\n"; echo "
\n"; echo "Professeur(s): "; if(!isset($divisions[$i]['services'][$j]['enseignants'])) { echo "

Aucun enseignant n'est associé à ce service.
L'emploi du temps a-t-il été correctement renseigné lors de la remontée vers STS?

\n"; $temoin_service_sans_enseignant++; } else { for($k=0;$k"; } else { echo ""; } echo "$login_prof"; } // Associer le prof à la matière: j_professeurs_matieres $sql="SELECT 1=1 FROM j_professeurs_matieres WHERE id_matiere='$mat' AND id_professeur='$login_prof';"; $res_prof_mat=mysqli_query($GLOBALS["mysqli"], $sql); echo " ("; if(mysqli_num_rows($res_prof_mat)==0) { $sql="INSERT INTO j_professeurs_matieres SET id_matiere='$mat', id_professeur='$login_prof';"; if($insert=mysqli_query($GLOBALS["mysqli"], $sql)) { echo ""; } else { echo ""; } } else { echo ""; } echo "$mat)"; } //else {echo "prof inconnu";} } } echo "
\n"; // Mettre tous les élèves dans le groupe pour toutes les périodes: j_eleves_groupes echo "Association des élèves:
"; echo "
\n"; for($k=0;$k0) {echo " - ";} echo $tab_ele[$k]." ("; for($l=0;$l0) {echo "-";} $sql="SELECT 1=1 FROM j_eleves_groupes WHERE id_groupe='$id_groupe' AND login='".$tab_ele[$k]."' AND periode='".$tab_per[$l]."';"; //echo "$sql
"; $res_ele_grp=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_ele_grp)==0) { $sql="INSERT INTO j_eleves_groupes SET id_groupe='$id_groupe', login='".$tab_ele[$k]."', periode='".$tab_per[$l]."';"; if($insert=mysqli_query($GLOBALS["mysqli"], $sql)) { echo ""; // Insérer la modalité si elle est renseignée dans Sconet. $sql="SELECT code_modalite_elect FROM sconet_ele_options seo, eleves e, matieres m WHERE seo.ele_id=e.ele_id AND e.login='".$tab_ele[$k]."' AND seo.code_matiere=m.code_matiere AND m.matiere='".$mat."';"; $test_modalite=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test_modalite)>0) { $lig_modalite=mysqli_fetch_object($test_modalite); // Pour ne pas l'insérer autant de fois que de période $sql="SELECT 1=1 FROM j_groupes_eleves_modalites WHERE id_groupe='".$id_groupe."' AND login='".$tab_ele[$k]."';"; //echo "$sql
"; $test_modalite_deja=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test_modalite_deja)==0) { $sql="INSERT INTO j_groupes_eleves_modalites SET id_groupe='".$id_groupe."', login='".$tab_ele[$k]."', code_modalite_elect='".$lig_modalite->code_modalite_elect."';"; $insert_modalite=mysqli_query($GLOBALS["mysqli"], $sql); } } } else { //echo "$sql
\n"; echo ""; } } else { echo ""; } echo $tab_per[$l].""; } echo ")"; } echo "
\n"; echo "
\n"; } else { echo "ERREUR"; } echo "

\n"; } } } echo "
\n"; } $nb_groupes_sans_matieres=0; echo "

Création des groupes

\n"; // Traiter les groupes ensuite if(!isset($groupes)) { echo "

Aucun groupe n'est défini.

\n"; } else { for ($i=0;$i\$code_groupe=$code_groupe
"; //echo "\$libelle_groupe=$libelle_groupe
"; $tab_clas=array(); $tab_ele=array(); $tab_per_clas=array(); $max_per=0; $list_classe=""; $cpt_clas=0; for ($ii=0;$iiid; //echo "\$id_classe=$id_classe
"; // Récupération des périodes de la classe //$tab_per=array(); $periode_query=mysqli_query($GLOBALS["mysqli"], "SELECT MAX(num_periode) FROM periodes WHERE id_classe='$id_classe';"); if(mysqli_num_rows($periode_query)>0) { $max_per=old_mysql_result($periode_query,0); $tab_per_clas[]=$max_per; $tab_test=array_unique($tab_per_clas); if(count($tab_test)==1) { // Récupération des élèves de la classe $sql="SELECT DISTINCT login FROM j_eleves_classes WHERE id_classe='$id_classe' ORDER BY login;"; $res_ele=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_ele)>0) { while($lig_ele=mysqli_fetch_object($res_ele)) { $tab_ele[]=$lig_ele->login; } } //$tab_clas[]=$classe; //$tab_id_clas[]=$id_classe; $tab_clas[]=$id_classe; if($list_classe!="") {$list_classe.=", ";} $list_classe.=$classe; } else { echo "

PROBLEME : Des classes n'ayant pas le même nombre de périodes sont associées dans un même groupe.

\n"; } //for($loop=0;$loop"; //} } } } if(!isset($groupes[$i]['code'])) { echo "

Le groupe n°$i n'a pas la forme standard dans le XML de STS.
Il ne peut pas être créé dans GEPI.

\n"; } elseif(!isset($groupes[$i]['grp'])) { echo "

Le groupe n°$i nommé dans STS ".$groupes[$i]['code']." n'est associé à aucune matière dans STS???
\n"; $nb_groupes_sans_matieres++; $code_groupe=$groupes[$i]['code']; $nom_grp=$groupes[$i]['code']; $descr_grp=$groupes[$i]['code']; $mat="X_X_X"; echo "

On crée néanmoins le groupe.
Vous devrez revoir l'association avec une matière.

Création du groupe $descr_grp ($nom_grp) en $list_classe"; echo " (nom sts: ".$code_groupe.")"; echo ": "; if($id_groupe=create_group($nom_grp, $descr_grp, $mat, $tab_clas)) { echo "$id_groupe"; //echo "
\n"; echo "

\n"; // Mettre tous les élèves dans le groupe pour toutes les périodes: j_eleves_groupes echo "Association des élèves:
"; echo "
\n"; $sql="SELECT login FROM eleves e, temp_grp t WHERE e.ele_id=t.ELE_ID AND t.NOM_GRP='".mysqli_real_escape_string($GLOBALS["mysqli"], $code_groupe)."';"; $get_login_ele=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($get_login_ele)==0) { // On va mettre tous les élèves dans le groupe $tab_ele_courant=$tab_ele; } else { $tab_ele_courant=array(); while($lig_ele=mysqli_fetch_object($get_login_ele)) { // Normalement on n'a qu'un enregistrement par ele/grp, mais au cas où if(!in_array($lig_ele->login,$tab_ele_courant)) { $tab_ele_courant[]=$lig_ele->login; } } } for($k=0;$k0) {echo " - ";} echo $tab_ele_courant[$k]." ("; //for($l=0;$l0) {echo "-";} //$sql="SELECT 1=1 FROM j_eleves_groupes WHERE id_groupe='$id_groupe' AND login='".$tab_ele_courant[$k]."' AND periode='".$tab_per[$l]."';"; $sql="SELECT 1=1 FROM j_eleves_groupes WHERE id_groupe='$id_groupe' AND login='".$tab_ele_courant[$k]."' AND periode='".$l."';"; //echo "$sql
"; $res_ele_grp=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_ele_grp)==0) { //$sql="INSERT INTO j_eleves_groupes SET id_groupe='$id_groupe', login='".$tab_ele_courant[$k]."', periode='".$tab_per[$l]."';"; $sql="INSERT INTO j_eleves_groupes SET id_groupe='$id_groupe', login='".$tab_ele_courant[$k]."', periode='".$l."';"; if($insert=mysqli_query($GLOBALS["mysqli"], $sql)) { echo ""; } else { //echo "$sql
\n"; echo ""; } } else { echo ""; } //echo $tab_per[$l].""; echo $l.""; } echo ")"; } echo "
\n"; echo "
\n"; } } else { for($i_grp=0;$i_grpCréation du groupe $descr_grp ($nom_grp) en $list_classe"; echo " (nom sts: ".$code_groupe.")"; echo ": "; if($id_groupe=create_group($nom_grp, $descr_grp, $mat, $tab_clas)) { echo "$id_groupe"; //echo "
\n"; echo "
\n"; echo "Professeur(s): "; if((!isset($groupes[$i]['grp'][$i_grp]['enseignant']))||(count($groupes[$i]['grp'][$i_grp]['enseignant'])==0)) { echo "Aucun professeur n'est associé à ce groupe"; } else { for($k=0;$k0) {echo ", ";} $sql="select col1 from tempo2 where col2='P".$groupes[$i]['grp'][$i_grp]['enseignant'][$k]['id']."';"; $res_prof=mysqli_query($GLOBALS["mysqli"], $sql); $login_prof=@old_mysql_result($res_prof, 0, 'col1'); if ($login_prof!='') { // Associer le groupe au prof: j_groupes_professeurs $sql="SELECT 1=1 FROM j_groupes_professeurs WHERE id_groupe='$id_groupe' AND login='$login_prof';"; $res_grp_prof=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_grp_prof)==0) { $sql="INSERT INTO j_groupes_professeurs SET id_groupe='$id_groupe', login='$login_prof';"; if($insert=mysqli_query($GLOBALS["mysqli"], $sql)) { echo ""; } else { echo ""; } echo "$login_prof"; } // Associer le prof à la matière: j_professeurs_matieres $sql="SELECT 1=1 FROM j_professeurs_matieres WHERE id_matiere='$mat' AND id_professeur='$login_prof';"; $res_prof_mat=mysqli_query($GLOBALS["mysqli"], $sql); echo " ("; if(mysqli_num_rows($res_prof_mat)==0) { $sql="INSERT INTO j_professeurs_matieres SET id_matiere='$mat', id_professeur='$login_prof';"; if($insert=mysqli_query($GLOBALS["mysqli"], $sql)) { echo ""; } else { echo ""; } } else { echo ""; } echo "$mat)"; } //else {echo "prof inconnu";} } } echo "
\n"; // Mettre tous les élèves dans le groupe pour toutes les périodes: j_eleves_groupes echo "Association des élèves:
"; echo "
\n"; $sql="SELECT login FROM eleves e, temp_grp t WHERE e.ele_id=t.ELE_ID AND t.NOM_GRP='".mysqli_real_escape_string($GLOBALS["mysqli"], $code_groupe)."';"; $get_login_ele=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($get_login_ele)==0) { // On va mettre tous les élèves dans le groupe $tab_ele_courant=$tab_ele; } else { $tab_ele_courant=array(); while($lig_ele=mysqli_fetch_object($get_login_ele)) { // Normalement on n'a qu'un enregistrement par ele/grp, mais au cas où if(!in_array($lig_ele->login,$tab_ele_courant)) { $tab_ele_courant[]=$lig_ele->login; } } } for($k=0;$k0) {echo " - ";} echo $tab_ele_courant[$k]." ("; //for($l=0;$l0) {echo "-";} //$sql="SELECT 1=1 FROM j_eleves_groupes WHERE id_groupe='$id_groupe' AND login='".$tab_ele_courant[$k]."' AND periode='".$tab_per[$l]."';"; $sql="SELECT 1=1 FROM j_eleves_groupes WHERE id_groupe='$id_groupe' AND login='".$tab_ele_courant[$k]."' AND periode='".$l."';"; //echo "$sql
"; $res_ele_grp=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_ele_grp)==0) { //$sql="INSERT INTO j_eleves_groupes SET id_groupe='$id_groupe', login='".$tab_ele_courant[$k]."', periode='".$tab_per[$l]."';"; $sql="INSERT INTO j_eleves_groupes SET id_groupe='$id_groupe', login='".$tab_ele_courant[$k]."', periode='".$l."';"; if($insert=mysqli_query($GLOBALS["mysqli"], $sql)) { echo ""; } else { //echo "$sql
\n"; echo ""; } } else { echo ""; } //echo $tab_per[$l].""; echo $l.""; } echo ")"; } echo "
\n"; echo "
\n"; } } } } } /* 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 { */ if($temoin_div_sans_services==0) { 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.

"; } elseif($temoin_div_sans_services==1) { echo "

$temoin_div_sans_services division n'a pas de services déclarés.
Le fichier STS fourni n'est peut-être pas complet.
Cela arrive notamment quand l'emploi du temps n'a pas été remonté vers STS.
Vous devriez contrôler cela avant de procéder à l'étape d'importation des options suivies par les élèves.

\n"; } else { echo "

$temoin_div_sans_services divisions n'ont pas de services déclarés.
Le fichier STS fourni n'est peut-être pas complet.
Cela arrive notamment quand l'emploi du temps n'a pas été remonté vers STS.
Vous devriez contrôler cela avant de procéder à l'étape d'importation des options suivies par les élèves.

\n"; } if($temoin_service_sans_enseignant==1) { echo "

$temoin_service_sans_enseignant enseignement (service) a été déclaré sans enseignant associé.
Les élèves pratiquent-ils l'auto-formation en autonomie ou le STS est-il mal renseigné?

\n"; } elseif($temoin_service_sans_enseignant>1) { echo "

$temoin_service_sans_enseignant enseignements (services) ont été déclarés sans enseignant associé.
Les élèves pratiquent-ils l'auto-formation en autonomie ou le STS est-il mal renseigné?

\n"; } if($nb_groupes_sans_matieres!=0) { echo "

$nb_groupes_sans_matieres enseignements ont été déclarés sans matière associée.
Vous devrez corriger la matière associée ainsi que le professeur associé.

\n"; } //} echo "

Importer les options suivies par les élèves

\n"; echo "


\n"; require("../lib/footer.inc.php"); die(); //================================================================================================= } else { $fp = fopen("../temp/$tempdir/f_men.csv","r"); $fp2 = fopen("../temp/$tempdir/f_gpd.csv","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"); $fp2 = fopen("../temp/$tempdir/f_gpd.csv","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 //$ligne = dbase_get_record($fp2,$k); 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] = dbase_filter(trim($tabligne[$tabindice2[$i]])); 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); /* if (@dbase_get_record_with_names($fp,1)) { $temp = @dbase_get_record_with_names($fp,1); } else { echo "

Le fichier 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 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"); /* for ($k = 0; $k < count($tabchamps); $k++) { //for ($i = 0; $i < count($en_tete); $i++) { for ($i = 0; $i < count($en_tete2); $i++) { //echo "\$en_tete2[$i]=".$en_tete2[$i]." et \$tabchamps[$k]=".$tabchamps[$k]."
\n"; //if ($en_tete2[$i] == $tabchamps[$k]) { if (trim($en_tete2[$i]) == $tabchamps[$k]) { $tabindice[] = $i; affiche_debug("\$tabindice[]=$i
\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"); $fp = fopen("../temp/$tempdir/f_men.csv","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++){ //$ligne = dbase_get_record($fp,$k); if(!feof($fp)){ $ligne = 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] = dbase_filter(trim($tabligne[$tabindice[$i]])); 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 = '" . mysqli_real_escape_string($GLOBALS["mysqli"], $matiere_nom) . "', recalcul_rang = 'y'"); affiche_debug("insert into groupes set name = '" . $affiche[0] . "', description = '" . mysqli_real_escape_string($GLOBALS["mysqli"], $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"); //echo "\$nb_per=$nb_per
"; // 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"); affiche_debug("
\nINSERT 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 "Ajout de $login_prof à un groupe existant.
\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 "

Contrôlez dans la page si vous n'avez pas d'erreur (signalée en rouge le cas échéant), puis 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

"; echo "


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