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(); } $sql="SELECT 1=1 FROM droits WHERE id='/init_xml2/traite_csv_udt.php';"; $test=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test)==0) { $sql="INSERT INTO droits SET id='/init_xml2/traite_csv_udt.php', administrateur='V', professeur='F', cpe='F', scolarite='F', eleve='F', responsable='F', secours='F', autre='F', description='Import des enseignements via un Export CSV UDT', statut='';"; $insert=mysqli_query($GLOBALS["mysqli"], $sql); } if (!checkAccess()) { header("Location: ../logout.php?auto=1"); die(); } check_token(); function get_nom_complet_from_matiere($mat) { $sql="SELECT nom_complet FROM matieres WHERE matiere='$mat';"; $res_mat=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_mat)>0) { $lig_mat=mysqli_fetch_object($res_mat); return $lig_mat->nom_complet; } } //**************** EN-TETE ***************** $titre_page = "Outil d'initialisation de l'année : Importation CSV UDT"; require_once("../lib/header.inc.php"); //**************** FIN EN-TETE ***************** include("init_xml_lib.php"); //debug_var(); /* function affiche_debug($texte) { // Passer à 1 la variable pour générer l'affichage des infos de debug... $debug=0; if($debug==1) { echo "".$texte.""; flush(); } } */ // Etape... $step=isset($_POST['step']) ? $_POST['step'] : (isset($_GET['step']) ? $_GET['step'] : NULL); if(isset($_GET['ad_retour'])) { $_SESSION['ad_retour']=$_GET['ad_retour']; } //echo "\$_SESSION['ad_retour']=".$_SESSION['ad_retour']."
"; $mysql_collate=getSettingValue("mysql_collate") ? getSettingValue("mysql_collate") : ""; $chaine_mysql_collate=""; if($mysql_collate!="") {$chaine_mysql_collate="COLLATE $mysql_collate";} //unset($remarques); //$remarques=array(); // On va uploader le CSV dans le tempdir de l'utilisateur (administrateur) $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 } // ======================================================= // EST-CE ENCORE UTILE? if(isset($_GET['nettoyage'])) { //echo "

Suppression des CSV

\n"; echo "

Suppression du CSV

\n"; echo "

Retour Retour"; echo " | Autre import

\n"; //echo "\n"; echo "

Si le CSV d'UDT est présent, il sera supprimé...

\n"; //$tabfich=array("f_ele.csv","f_ere.csv"); $tabfich=array("export_udt.csv"); for($i=0;$iSuppression de $tabfich[$i]... "; if(unlink("../temp/".$tempdir."/$tabfich[$i]")) { echo "réussie.

\n"; } else { echo "Echec! Vérifiez les droits d'écriture sur le serveur.

\n"; } } } require("../lib/footer.inc.php"); die(); } // ======================================================= else { echo "

Première phase de l'import CSV UDT

\n"; //echo "

Préparation des données élèves/classes/périodes/options

\n"; echo "

Retour Retour"; //echo " | Autre import"; echo " | Suppression d'un CSV existant"; echo "

\n"; //echo "\n"; //if(!isset($_POST['is_posted'])) { if(!isset($step)) { echo "

Upload du fichier d'export d'UDT.

\n"; echo "
\n"; echo "
\n"; echo "

Veuillez fournir le fichier d'export CSV d'UDT :
\n"; echo "
\n"; echo "\n"; echo "\n"; echo add_token_field(); echo "

\n"; echo "
\n"; echo "
\n"; echo "

Remarques :

\n"; echo "\n"; } else { $post_max_size=ini_get('post_max_size'); $upload_max_filesize=ini_get('upload_max_filesize'); $max_execution_time=ini_get('max_execution_time'); $memory_limit=ini_get('memory_limit'); if($step==0) { $csv_file = isset($_FILES["csv_file"]) ? $_FILES["csv_file"] : NULL; if(!is_uploaded_file($csv_file['tmp_name'])) { echo "

L'upload du fichier a échoué.

\n"; echo "

Les variables du php.ini peuvent peut-être expliquer le problème:
\n"; echo "post_max_size=$post_max_size
\n"; echo "upload_max_filesize=$upload_max_filesize
\n"; echo "

\n"; // Il ne faut pas aller plus loin... // SITUATION A GERER require("../lib/footer.inc.php"); die(); } else { if(!file_exists($csv_file['tmp_name'])) { echo "

Le fichier aurait été uploadé... mais ne serait pas présent/conservé.

\n"; echo "

Les variables du php.ini peuvent peut-être expliquer le problème:
\n"; echo "post_max_size=$post_max_size
\n"; echo "upload_max_filesize=$upload_max_filesize
\n"; echo "et le volume de ".$csv_file['name']." serait
\n"; echo "\$csv_file['size']=".volume_human($csv_file['size'])."
\n"; echo "

\n"; // Il ne faut pas aller plus loin... // SITUATION A GERER require("../lib/footer.inc.php"); die(); } echo "

Le fichier a été uploadé.

\n"; //$source_file=stripslashes($csv_file['tmp_name']); $source_file=$csv_file['tmp_name']; $dest_file="../temp/".$tempdir."/export_udt.csv"; $res_copy=copy("$source_file" , "$dest_file"); if(!$res_copy) { echo "

La copie du fichier vers le dossier temporaire a échoué.
Vérifiez que l'utilisateur ou le groupe apache ou www-data a accès au dossier temp/$tempdir

\n"; // Il ne faut pas aller plus loin... // SITUATION A GERER require("../lib/footer.inc.php"); die(); } else { echo "

La copie du fichier vers le dossier temporaire a réussi.

\n"; echo "

Veuillez maintenant compléter les correspondances utiles entre UDT et GEPI :

\n"; //$sql="DROP TABLE IF EXISTS udt_corresp;"; //$suppr_table = mysql_query($sql); $sql="CREATE TABLE IF NOT EXISTS udt_corresp ( champ varchar(255) $chaine_mysql_collate NOT NULL default '', nom_udt varchar(255) $chaine_mysql_collate NOT NULL default '', nom_gepi varchar(255) $chaine_mysql_collate NOT NULL default '' ) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;"; $create_table = mysqli_query($GLOBALS["mysqli"], $sql); //$sql="TRUNCATE TABLE udt_corresp;"; //$vide_table = mysql_query($sql); //$sql="DROP TABLE IF EXISTS udt_lignes;"; //$suppr_table = mysql_query($sql); $sql="CREATE TABLE IF NOT EXISTS udt_lignes ( id INT(11) unsigned NOT NULL auto_increment, division varchar(255) $chaine_mysql_collate NOT NULL default '', matiere varchar(255) $chaine_mysql_collate NOT NULL default '', prof varchar(255) $chaine_mysql_collate NOT NULL default '', groupe varchar(255) $chaine_mysql_collate NOT NULL default '', regroup varchar(255) $chaine_mysql_collate NOT NULL default '', mo varchar(255) $chaine_mysql_collate NOT NULL default '', PRIMARY KEY id (id) ) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;"; //echo "$sql
"; $create_table = mysqli_query($GLOBALS["mysqli"], $sql); $sql="TRUNCATE TABLE udt_lignes;"; $vide_table = mysqli_query($GLOBALS["mysqli"], $sql); //$tabchamps = array("Jour", "Heure", "Div", "Matière", "Professeur", "Salle", "Groupe", "Regroup", "Eff", "Mo", "Freq", "Aire"); $tabchamps = array("Div", "Matière", "Professeur", "Groupe", "Regroup", "Mo"); // Lire ligne 1 et la mettre dans $temp $fp=fopen($dest_file,"r"); if(!$fp) { echo "

ERREUR lors de la tentative d'ouverture du fichier $dest_file

\n"; require("../lib/footer.inc.php"); die(); } // Lecture de la ligne 1 et la mettre dans $temp $temp=fgets($fp,4096); $en_tete=explode(";",$temp); $tabindice=array(); // On range dans tabindice les indices des champs retenus for ($k = 0; $k < count($tabchamps); $k++) { for ($i = 0; $i < count($en_tete); $i++) { if (remplace_accents($en_tete[$i]) == remplace_accents($tabchamps[$k])) { $tabindice[] = $i; } } } if(count($tabindice)!=count($tabchamps)) { echo "

ERREUR : ".count($tabindice)." champs sur un total de ".count($tabchamps)." ont été identifiés.
Les champs sont habituellement :
Jour;Heure;Div;Matière;Professeur;Salle;Groupe;Regroup;Eff;Mo;Freq;Aire
Sur ces champs, seuls Div, Matière, Professeur, Groupe, Regroup, Mo sont requis

On suppose pour la suite que les champs sont
Jour;Heure;Div;Matière;Professeur;Salle;Groupe;Regroup;Eff;Mo;Freq;Aire
Si ce n'est pas le cas, ajoutez à la main la ligne d'entête dans votre fichier et refaites cette étape.

"; flush(); $tabindice=array(2,3,4,6,7,9); } // Lire le fichier $ligne=array(); while(!feof($fp)){ $ligne[]=fgets($fp,4096); } fclose($fp); // Lister les classes, matières et profs $udt_div=array(); $udt_matiere=array(); $udt_prof=array(); for($i=0;$i"; if($ligne[$i]!='') { $tab=explode(";",$ligne[$i]); if(($tab[$tabindice[0]]!='')&&(!in_array($tab[$tabindice[0]],$udt_div))) {$udt_div[]=$tab[$tabindice[0]];} if(($tab[$tabindice[1]]!='')&&(!in_array($tab[$tabindice[1]],$udt_matiere))) {$udt_matiere[]=$tab[$tabindice[1]];} if(($tab[$tabindice[2]]!='')&&(!in_array($tab[$tabindice[2]],$udt_prof))) {$udt_prof[]=$tab[$tabindice[2]];} $div=preg_replace("/[^a-zA-Z0-9_. -]/", "", $tab[$tabindice[0]]); $matiere=preg_replace("/[^a-zA-Z0-9_. -]/","", $tab[$tabindice[1]]); $professeur=preg_replace("/[^a-zA-Z_. -]/","", $tab[$tabindice[2]]); $groupe=preg_replace("/[^a-zA-Z0-9_. -]/","", $tab[$tabindice[3]]); $regroup=preg_replace("/[^a-zA-Z0-9_. -]/","", $tab[$tabindice[4]]); $mo=my_strtoupper($tab[$tabindice[5]]); //if($mo=="MO") { if($regroup!="") { $sql="SELECT 1=1 FROM udt_lignes WHERE division='$div' AND matiere='$matiere' AND prof='$professeur' AND groupe='$groupe' AND regroup='$regroup' AND mo='$mo';"; } else { $sql="SELECT 1=1 FROM udt_lignes WHERE division='$div' AND matiere='$matiere' AND prof='$professeur';"; } $test=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test)==0) { // Inscrire les correspondances avec noms corrigés $sql="INSERT INTO udt_lignes SET division='$div', matiere='$matiere', prof='$professeur', groupe='$groupe', regroup='$regroup', mo='$mo';"; //echo "$sql
\n"; $insert=mysqli_query($GLOBALS["mysqli"], $sql); if(!$insert) {echo "Erreur sur $sql
\n";} } // Plus loin corriger les $udt_div[] de la même façon avant d'insérer les correspondances } } sort($udt_div); sort($udt_matiere); sort($udt_prof); $sql="SELECT id,classe, nom_complet FROM classes ORDER BY classe;"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res)==0) { echo "

ERREUR : Il n'existe aucune classe dans la base.

\n"; require("../lib/footer.inc.php"); die(); } while($lig=mysqli_fetch_object($res)) { $tab_id_classe[]=$lig->id; $tab_classe[]=$lig->classe; $tab_classe_nom_complet[]=$lig->nom_complet; } echo "
\n"; echo "\n"; echo add_token_field(); // Identifier les classes echo "

Classes :

\n"; echo "
\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; $alt=1; for($i=0;$i\n"; echo "\n"; echo "\n"; echo "\n"; } echo "
Classe dans UDTClasse dans Gepi
\n"; echo "\n"; echo "$udt_div[$i] : "; echo "\n"; echo "\n"; echo "\n"; for($j=0;$j$tab_classe[$j]\n"; } echo "\n"; echo "
\n"; echo "
\n"; $sql="SELECT matiere, nom_complet FROM matieres ORDER BY matiere;"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res)==0) { echo "

ERREUR : Il n'existe aucune matière dans la base.

\n"; require("../lib/footer.inc.php"); die(); } while($lig=mysqli_fetch_object($res)) { $tab_matiere[]=$lig->matiere; $tab_matiere_nom_complet[]=$lig->nom_complet; } // Les noms avec des PRIME ne sont pas détectés... on se retrouve avec ATPquot pour ATP' $tab_udt_matiere=array(); $sql="SELECT * FROM udt_corresp WHERE champ='matiere' ORDER BY nom_udt;"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res)>0) { while($lig=mysqli_fetch_object($res)) { $tab_udt_matiere[$lig->nom_gepi]=$lig->nom_udt; //echo "\$tab_udt_matiere[$lig->nom_gepi]=$lig->nom_udt
\n"; } } // Identifier les matières echo "

Matières :

\n"; echo "
\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; $alt=1; for($i=0;$i\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; } echo "
Matière dans UDTMatière dans GepiInfo
\n"; echo "\n"; echo "$udt_matiere[$i] : "; echo "\n"; echo "\n"; echo "\n"; if($matiere_trouvee=="n") { $sql="SELECT * FROM udt_lignes WHERE matiere='$udt_matiere[$i]' ORDER BY division, prof;"; //echo "$sql
\n"; $res_info=mysqli_query($GLOBALS["mysqli"], $sql); if(($res_info)&&(mysqli_num_rows($res_info)>0)) { echo "\n"; $info_alt=1; while($lig_info=mysqli_fetch_object($res_info)) { $info_alt=$info_alt*(-1); echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; } echo "
$lig_info->division$lig_info->matiere$lig_info->prof$lig_info->groupe$lig_info->regroup$lig_info->mo
\n"; } else{ echo "???"; } } else{ echo " "; } echo "
\n"; echo "
\n"; $tab_udt_prof=array(); $sql="SELECT * FROM udt_corresp WHERE champ='prof' ORDER BY nom_udt;"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res)>0) { while($lig=mysqli_fetch_object($res)) { $tab_udt_prof[$lig->nom_gepi]=$lig->nom_udt; //echo "\$tab_udt_matiere[$lig->nom_gepi]=$lig->nom_udt
\n"; } } $sql="SELECT login, nom, prenom FROM utilisateurs WHERE statut='professeur' AND etat='actif' ORDER BY nom,prenom;"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res)==0) { echo "

ERREUR : Il n'existe aucun professeur dans la base.

\n"; require("../lib/footer.inc.php"); die(); } while($lig=mysqli_fetch_object($res)) { $tab_login_prof[]=$lig->login; $tab_nom_prof[]=my_strtoupper($lig->nom); $tab_prenom_prof[]=my_strtoupper($lig->prenom); } // Identifier les profs echo "

Professeurs :

\n"; echo "
\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; $alt=1; for($i=0;$i\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; } echo "
Professeur dans UDTProfesseur dans GepiInfo
\n"; echo "\n"; echo "$udt_prof[$i] : "; $tmp_prof=explode(" ",$udt_prof[$i]); $udt_nom_suppose=$tmp_prof[0]; $udt_prenom_suppose=""; if(isset($tmp_prof[1])) {$udt_prenom_suppose=$tmp_prof[1];} echo "\n"; echo "\n"; echo "\n"; if($prof_trouve=="n") { $sql="SELECT * FROM udt_lignes WHERE prof='$udt_prof[$i]' ORDER BY division;"; $res_info=mysqli_query($GLOBALS["mysqli"], $sql); if(($res_info)&&(mysqli_num_rows($res_info)>0)) { echo "\n"; $info_alt=1; while($lig_info=mysqli_fetch_object($res_info)) { $info_alt=$info_alt*(-1); echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; } echo "
$lig_info->division$lig_info->matiere$lig_info->prof$lig_info->groupe$lig_info->regroup$lig_info->mo
\n"; } else{ echo " "; } } else{ echo " "; } echo "
\n"; echo "
\n"; echo "\n"; echo "

\n"; echo "
\n"; //echo "

A FAIRE: Pouvoir n'afficher que les comptes actifs

\n"; echo "

Si vous ne souhaitez pas créer de groupes de VIE DE CLASSE, REMEDIATION, SOUTIEN,... parce qu'aucune note ne doit être saisie dans ces 'matières', il suffit de ne faire correspondre aucune matière GEPI avec la matière UDT.

\n"; } } } elseif($step==1) { if(!isset($_POST['is_posted'])) { echo "

ERREUR : Une partie des variables n'as pas été POSTée.
Vous avez probablement un module PHP qui limite le nombre de variables transmises (suhosin?)

\n"; require("../lib/footer.inc.php"); die(); } $classe_udt=isset($_POST['classe_udt']) ? $_POST['classe_udt'] : array(); $classe=isset($_POST['classe']) ? $_POST['classe'] : array(); //$id_classe=isset($_POST['id_classe']) ? $_POST['id_classe'] : array(); $matiere_udt=isset($_POST['matiere_udt']) ? $_POST['matiere_udt'] : array(); $matiere=isset($_POST['matiere']) ? $_POST['matiere'] : array(); $prof_udt=isset($_POST['prof_udt']) ? $_POST['prof_udt'] : array(); $login_prof=isset($_POST['login_prof']) ? $_POST['login_prof'] : array(); echo "

Suppression des enseignements, associations élèves/enseignements, classes/enseignements et professeurs/enseignements.

\n"; $del = @mysqli_query($GLOBALS["mysqli"], "DELETE FROM groupes;"); $del = @mysqli_query($GLOBALS["mysqli"], "DELETE FROM j_eleves_groupes;"); $del = @mysqli_query($GLOBALS["mysqli"], "DELETE FROM j_groupes_classes;"); $del = @mysqli_query($GLOBALS["mysqli"], "DELETE FROM j_groupes_professeurs;"); $del = @mysqli_query($GLOBALS["mysqli"], "DELETE FROM j_groupes_matieres;"); $del = @mysqli_query($GLOBALS["mysqli"], "DELETE FROM j_signalement;"); $del = @mysqli_query($GLOBALS["mysqli"], "DELETE FROM j_groupes_visibilite;"); $del = @mysqli_query($GLOBALS["mysqli"], "DELETE FROM acces_cdt_groupes;"); // On conserve les associations profs/matières //$del = @mysql_query("DELETE FROM j_professeurs_matieres;"); /* mar aoû 31 22:11:47 steph@hpcrob:~/2010_01_02/hameau $ grep SVT udt_20100826.csv |egrep "(3 B1|3 B2)" Mardi;11H00;3 B2;SVT;FERMANEL CHRISTINE;32;;;29;CG;sb;; Mercredi;10H00;3 B2;SVT;FERMANEL CHRISTINE;32;;;29;CG;;; Jeudi;08H00;3 B1;SVT;KERAUDREN DELPHINE;32;;;28;CG;;; Vendredi;09H00;3 B1;SVT;KERAUDREN DELPHINE;32;;;28;CG;sa;; mar aoû 31 22:12:01 steph@hpcrob:~/2010_01_02/hameau $ */ $sql="TRUNCATE TABLE udt_corresp;"; $vide_table=mysqli_query($GLOBALS["mysqli"], $sql); for($i=0;$i\n"; foreach($prof_udt as $key => $value) { echo "\$prof_udt[$key]=$value
\n"; } echo "\n"; foreach($login_prof as $key => $value) { echo "\$login_prof[$key]=$value
\n"; } echo "\n"; */ for($i=0;$i\n"; $res=mysqli_query($GLOBALS["mysqli"], $sql); } } $nom_classe=array(); $sql="SELECT id,classe FROM classes;"; $res_classes=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_classes)==0) { echo "

Aucune classe n'existe encore.

\n"; require("../lib/footer.inc.php"); die(); } while($lig_classe=mysqli_fetch_object($res_classes)) { $nom_classe[$lig_classe->id]=$lig_classe->classe; } $nom_prenom_prof=array(); $sql="SELECT login, civilite, nom, prenom FROM utilisateurs WHERE statut='professeur';"; $res_profs=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_profs)==0) { echo "

Aucun prof n'existe encore.

\n"; require("../lib/footer.inc.php"); die(); } while($lig_profs=mysqli_fetch_object($res_profs)) { $nom_prenom_prof[$lig_profs->login]=$lig_profs->civilite." ".my_strtoupper($lig_profs->nom)." ".casse_mot($lig_profs->prenom,'majf2'); } $lignes_deja_traitees=array(); //$sql="SELECT * FROM udt_lignes;"; $sql="SELECT * FROM udt_lignes ORDER BY regroup, division, matiere;"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res)>0) { while($lig=mysqli_fetch_object($res)) { if(in_array($lig->id,$lignes_deja_traitees)) { /*echo "

Ligne $lig->id déjà traitée.
\n"; echo "division=$lig->division
\n"; echo "matiere=$lig->matiere
\n"; echo "prof=$lig->prof
\n"; echo "groupe=$lig->groupe
\n"; echo "regroup=$lig->regroup
\n"; echo "mo=$lig->mo
\n"; */ echo "

L'association $lig->division/$lig->matiere/$lig->prof"; if($lig->groupe!="") {echo " ($lig->groupe)";} if($lig->regroup!="") {echo " ($lig->regroup)";} echo " est déjà traitée."; echo "


\n"; } else { /* echo "

\n"; echo "id=$lig->id
\n"; echo "division=$lig->division
\n"; echo "matiere=$lig->matiere
\n"; echo "prof=$lig->prof
\n"; echo "groupe=$lig->groupe
\n"; echo "regroup=$lig->regroup
\n"; echo "mo=$lig->mo
\n"; */ if(!isset($tab_ele[$lig->division])) { $tab_ele[$lig->division]=array(); //$sql="SELECT DISTINCT jec.login, c.classe FROM j_eleves_classes jec, classes c, udt_corresp uc WHERE jec.id_classe=c.id AND c.classe=uc.nom_gepi AND uc.champ='classe' AND classe_udt='$lig' ORDER BY jec.login;"; //$sql="SELECT DISTINCT jec.login FROM j_eleves_classes jec, classes c, udt_corresp uc WHERE jec.id_classe=c.id AND c.classe=uc.nom_gepi AND uc.champ='classe' AND uc.nom_udt='$lig->division' ORDER BY jec.login;"; $sql="SELECT DISTINCT jec.login, c.id FROM j_eleves_classes jec, classes c, udt_corresp uc WHERE jec.id_classe=c.id AND c.classe=uc.nom_gepi AND uc.champ='classe' AND uc.nom_udt='$lig->division' ORDER BY jec.login;"; //echo "$sql
\n"; $res_ele=mysqli_query($GLOBALS["mysqli"], $sql); while($lig_ele=mysqli_fetch_object($res_ele)) { //$tab_ele[$lig->division][]=$lig_ele->login; $tab_ele[$lig_ele->id][]=$lig_ele->login; } } //echo "

\n"; if(!isset($tab_per[$lig->division])) { //$sql="SELECT MAX(num_periode) AS max_per FROM periodes p, classes c, udt_corresp uc WHERE c.classe=uc.nom_gepi AND uc.nom_udt='$lig->division' AND c.id=p.id_classe;"; //$sql="SELECT MAX(num_periode) AS max_per, c.id FROM periodes p, classes c, udt_corresp uc WHERE c.classe=uc.nom_gepi AND uc.nom_udt='$lig->division' AND c.id=p.id_classe GROUP BY c.id;"; $sql="SELECT num_periode AS max_per, c.id FROM periodes p, classes c, udt_corresp uc WHERE c.classe=uc.nom_gepi AND uc.nom_udt='$lig->division' AND c.id=p.id_classe ORDER BY num_periode DESC LIMIT 1;"; //echo "$sql
\n"; $periode_query=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($periode_query)>0) { $lig_per=mysqli_fetch_object($periode_query); //$tab_per[$lig->division]=$lig_per->max_per; //echo "\$tab_per[$lig->division]=$lig_per->max_per
\n"; $tab_per[$lig_per->id]=$lig_per->max_per; //echo "\$tab_per[$lig_per->id]=$lig_per->max_per
\n"; } } // Si c'est un regroupement, il va y avoir plusieurs classes associées // Il faudrait alors les récupérer... et ne pas traiter à nouveau les lignes correspondantes de udt_lignes quand on va les atteindre... $tab_clas=array(); if($lig->regroup!="") { //$sql="SELECT c.id FROM classes c, udt_corresp uc, udt_lignes ul WHERE ul.regroup='$lig->regroup' AND uc.nom_udt=ul.division AND uc.nom_gepi=c.classe AND uc.champ='classe';"; // Est-ce qu'un même regroupement peut correspondre à plusieurs matières? Sans doute... $sql="SELECT DISTINCT c.id FROM classes c, udt_corresp uc, udt_lignes ul WHERE ul.regroup='$lig->regroup' AND ul.matiere='$lig->matiere' AND uc.nom_udt=ul.division AND uc.nom_gepi=c.classe AND uc.champ='classe';"; //echo "$sql
\n"; $res_clas=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_clas)>0) { while($lig_clas=mysqli_fetch_object($res_clas)) { $tab_clas[]=$lig_clas->id; //echo "\$tab_clas[]=$lig_clas->id
\n"; } } $sql="SELECT ul.id FROM udt_lignes ul WHERE ul.regroup='$lig->regroup' AND ul.matiere='$lig->matiere';"; $res_lig=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_lig)>0) { while($lig_lig=mysqli_fetch_object($res_lig)) { $lignes_deja_traitees[]=$lig_lig->id; } } } else { $id_classe=""; $sql="SELECT DISTINCT c.id FROM classes c, udt_corresp uc WHERE uc.nom_udt='$lig->division' AND uc.nom_gepi=c.classe AND uc.champ='classe';"; //echo "$sql
\n"; $res_clas=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_clas)==0) { echo "

Aucune classe n'est associée à $lig->division dans Gepi.

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

ANOMALIE: Plus d'une classe est associée à $lig->division dans Gepi.

\n"; } else { $lig_clas=mysqli_fetch_object($res_clas); $id_classe=$lig_clas->id; //echo "\$id_classe=$id_classe
\n"; $tab_clas=array($id_classe); } } $mat=""; $sql="SELECT DISTINCT m.matiere, m.nom_complet FROM matieres m, udt_corresp uc WHERE uc.nom_udt='$lig->matiere' AND uc.nom_gepi=m.matiere AND uc.champ='matiere';"; //echo "$sql
\n"; $res_mat=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_mat)==0) { echo "

Aucune matière n'est associée dans Gepi à la matière $lig->matiere d'UDT.

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

ANOMALIE: Plus d'une matière est associée dans Gepi à la matière $lig->matiere d'UDT.

\n"; } else { $lig_mat=mysqli_fetch_object($res_mat); $mat=$lig_mat->matiere; $mat_nom_complet=$lig_mat->nom_complet; //echo "\$mat=$mat
\n"; //echo "\$mat_nom_complet=$mat_nom_complet
\n"; if($lig->regroup=="") { $nom_grp=$mat; $descr_grp=get_nom_complet_from_matiere($mat); } else { $nom_grp=$mat."_".$lig->regroup; //$descr_grp=get_nom_complet_from_matiere($mat)." ($lig->regroup ($lig->groupe))"; $descr_grp=get_nom_complet_from_matiere($mat); if($lig->groupe!="") { $descr_grp.=" ($lig->groupe)"; } elseif($lig->regroup!="") { $descr_grp.=" ($lig->regroup)"; } } if(count($tab_clas)==0) { echo "

Aucune classe n'est associée au groupe de $mat.

\n"; } else { //echo "Récapitulatif avant création du groupe :\n"; echo "

Création du groupe $nom_grp ($descr_grp) associé à la matière $mat "; $cpt_clas=0; echo "("; foreach($tab_clas as $key => $value) { if($cpt_clas>0) {echo ", ";} //echo "\$tab_clas[$key]=$value
\n"; //echo get_class_from_id($value); echo $nom_classe[$value]; $cpt_clas++; } echo "
) : "; if($id_groupe=create_group($nom_grp, $descr_grp, $mat, $tab_clas)) { //echo "Création du groupe $nom_grp ($descr_grp) avec l'id_groupe $id_groupe
\n"; echo "SUCCES : Groupe créé avec l'id_groupe $id_groupe
\n"; if($debug_import=="y") { echo "Nom du groupe : $nom_grp
"; echo "Description du groupe : $descr_grp
"; } // Récupérer les profs $tab_prof=array(); /* // CA NE FONCTIONNE PAS // J'AI mysql> select * from udt_lignes where matiere='IDARH'; +-----+----------+---------+-----------------+--------+----------+----+ | id | division | matiere | prof | groupe | regroup | mo | +-----+----------+---------+-----------------+--------+----------+----+ | 151 | 5 A1 | IDARH | ORELLANA NICOLE | IDARH1 | IDARH1 | CG | | 157 | 5 A2 | IDARH | ORELLANA NICOLE | IDARH1 | IDARH1 | CG | | 163 | 5 B1 | IDARH | ORELLANA NICOLE | IDARH1 | IDARH1 | CG | | 169 | 5 B2 | IDARH | ORELLANA NICOLE | IDARH1 | IDARH1 | CG | | 175 | 5 C | IDARH | ORELLANA NICOLE | IDARH1 | IDARH1 | CG | | 296 | 5 A1 | IDARH | CAUSSE JOSIANE | IDARH | 5IDARH-1 | CG | | 303 | 5 A2 | IDARH | CAUSSE JOSIANE | IDARH | 5IDARH-1 | CG | | 309 | 5 B1 | IDARH | CAUSSE JOSIANE | IDARH | 5IDARH-1 | CG | | 315 | 5 B2 | IDARH | CAUSSE JOSIANE | IDARH | 5IDARH-1 | CG | | 321 | 5 C | IDARH | CAUSSE JOSIANE | IDARH | 5IDARH-1 | CG | +-----+----------+---------+-----------------+--------+----------+----+ 10 rows in set (0.00 sec) mysql> // Les noms de groupes et regroup ne coïncident pas. // Si on considère qu'on a un seul enseignement d'une matière par classe, on va fusionner les groupes d'AGL1 (alors que plusieurs profs se répartissent les élèves de plusieurs classes) if($lig->regroup=="") { // Ce n'est pas un groupe/regroupement, on ne teste pas si plusieurs profs sont associés // S'il y a plusieurs enseignements de MATHS avec plusieurs profs sans groupes, on considère que tout les élèves sont dans chacun des groupes // Il faudra fusionner après coup si ce n'est pas le cas $sql="SELECT DISTINCT uc.nom_gepi FROM udt_corresp uc WHERE uc.nom_udt='$lig->prof' AND uc.champ='prof';"; echo "$sql
\n"; $res_prof=mysql_query($sql); if(mysql_num_rows($res_prof)>0) { // On ne fait qu'un tour dans la boucle while($lig_prof=mysql_fetch_object($res_prof)) { $tab_prof[]=$lig_prof->nom_gepi; echo "\$tab_prof[]=$lig_prof->nom_gepi
\n"; // Contrôler l'association avec la matière ou bien le update_group() le fait? $sql="SELECT 1=1 FROM j_professeurs_matieres WHERE id_professeur='$lig_prof->nom_gepi' AND id_matiere='$mat';"; $test=mysql_query($sql); if(mysql_num_rows($test)==0) { $sql="INSERT INTO j_professeurs_matieres SET id_professeur='$lig_prof->nom_gepi', id_matiere='$mat';"; $insert=mysql_query($sql); if(!$insert) {echo "ERREUR lors de l'association du professeur $lig_prof->nom_gepi avec la matière $mat
\n";} } } } } else { // Dans le cas d'un groupe/regroupement, on contrôle s'il y a plusieurs profs associés $sql="SELECT DISTINCT uc.nom_gepi FROM udt_corresp uc WHERE uc.nom_udt='$lig->prof' AND uc.champ='prof';"; echo "$sql
\n"; $res_prof=mysql_query($sql); if(mysql_num_rows($res_prof)>0) { while($lig_prof=mysql_fetch_object($res_prof)) { $tab_prof[]=$lig_prof->nom_gepi; echo "\$tab_prof[]=$lig_prof->nom_gepi
\n"; // Contrôler l'association avec la matière ou bien le update_group() le fait? $sql="SELECT 1=1 FROM j_professeurs_matieres WHERE id_professeur='$lig_prof->nom_gepi' AND id_matiere='$mat';"; $test=mysql_query($sql); if(mysql_num_rows($test)==0) { $sql="INSERT INTO j_professeurs_matieres SET id_professeur='$lig_prof->nom_gepi', id_matiere='$mat';"; $insert=mysql_query($sql); if(!$insert) {echo "ERREUR lors de l'association du professeur $lig_prof->nom_gepi avec la matière $mat
\n";} } } } } */ $sql="SELECT DISTINCT uc.nom_gepi FROM udt_corresp uc WHERE uc.nom_udt='$lig->prof' AND uc.champ='prof';"; //echo "$sql
\n"; $res_prof=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_prof)>0) { echo "Association des professeurs au groupe : "; $cpt_prof=0; while($lig_prof=mysqli_fetch_object($res_prof)) { if($cpt_prof>0) {echo ", ";} $tab_prof[]=$lig_prof->nom_gepi; //echo "\$tab_prof[]=$lig_prof->nom_gepi
\n"; echo $nom_prenom_prof[$lig_prof->nom_gepi]; // Contrôler l'association avec la matière ou bien le update_group() le fait? $sql="SELECT 1=1 FROM j_professeurs_matieres WHERE id_professeur='$lig_prof->nom_gepi' AND id_matiere='$mat';"; $test=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test)==0) { $sql="SELECT ordre_matieres FROM j_professeurs_matieres WHERE id_professeur='$lig_prof->nom_gepi' ORDER BY ordre_matieres DESC LIMIT 1;"; $res_max_ordre_matiere=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_max_ordre_matiere)==0) { $ordre_mat=1; } else { $lig_ordre_mat=mysqli_fetch_object($res_max_ordre_matiere); $ordre_mat=$lig_ordre_mat->ordre_matieres+1; } $sql="INSERT INTO j_professeurs_matieres SET id_professeur='$lig_prof->nom_gepi', id_matiere='$mat', ordre_matieres='$ordre_mat';"; $insert=mysqli_query($GLOBALS["mysqli"], $sql); if(!$insert) {echo "
ERREUR lors de l'association du professeur $lig_prof->nom_gepi avec la matière $mat
\n";} else {echo " (association du professeur avec la matière $mat)";} } $cpt_prof++; } } else { echo "Aucun professeur n'est associé au groupe.\n"; } echo "
\n"; $temoin_aucun_eleve_dans_l_enseignement="y"; if($lig->groupe!="") { for($loop=0;$loop $value) { $sql="SELECT 1=1 FROM temp_gep_import2 WHERE (ELEOPT1='$mat' OR ELEOPT2='$mat' OR ELEOPT3='$mat' OR ELEOPT4='$mat' OR ELEOPT5='$mat' OR ELEOPT6='$mat' OR ELEOPT7='$mat' OR ELEOPT8='$mat' OR ELEOPT9='$mat' OR ELEOPT10='$mat' OR ELEOPT11='$mat' OR ELEOPT12='$mat') AND LOGIN='$value';"; $test=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test)>0) { $temoin_aucun_eleve_dans_l_enseignement="n"; break; } } } } $tab_eleves_groupe_toutes_periodes=array(); $reg_eleves=array(); for($loop=0;$loop $value) { //echo "\$tab_ele[\$tab_clas[$loop]][$key]=\$tab_ele[$tab_clas[$loop]][$key]=$value
\n"; // PROBLEME: Les cours qui se font à la fois en classe entière et en groupe se retrouvent avec un effectif de zéro... d'où l'ajout du test sur aucun élève dans le groupe... if($temoin_aucun_eleve_dans_l_enseignement=="y") { $temoin_enseignement_suivi="y"; } else { $temoin_enseignement_suivi="n"; if($lig->groupe=="") { $temoin_enseignement_suivi="y"; } else { $sql="SELECT 1=1 FROM temp_gep_import2 WHERE (ELEOPT1='$mat' OR ELEOPT2='$mat' OR ELEOPT3='$mat' OR ELEOPT4='$mat' OR ELEOPT5='$mat' OR ELEOPT6='$mat' OR ELEOPT7='$mat' OR ELEOPT8='$mat' OR ELEOPT9='$mat' OR ELEOPT10='$mat' OR ELEOPT11='$mat' OR ELEOPT12='$mat') AND LOGIN='$value';"; $test=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test)>0) { $temoin_enseignement_suivi="y"; } } } if($temoin_enseignement_suivi=="y") { for($n_per=1;$n_per<=$tab_per[$tab_clas[$loop]];$n_per++) { $reg_eleves[$n_per][]=$value; if(!in_array($value, $tab_eleves_groupe_toutes_periodes)) { $tab_eleves_groupe_toutes_periodes[]=$value; } } if($debug_import=="y") {echo "$value suit l'enseignement n°$id_groupe de $mat
";} } elseif($debug_import=="y") {echo "$value ne suit pas l'enseignement n°$id_groupe de $mat
";} } } $code_modalite_elect_eleves=array(); for($loop=0;$loop0) { $lig_cme=mysqli_fetch_object($res_cme); $code_modalite_elect_eleves[$lig_cme->code_modalite_elect]["eleves"][]=$tab_eleves_groupe_toutes_periodes[$loop]; } } //$create = update_group($id_groupe, $id_matiere[$i], $mat_nom_complet, $id_matiere[$i], $reg_clazz, $reg_professeurs, $reg_eleves); $update_group=update_group($id_groupe, $nom_grp, $descr_grp, $mat, $tab_clas, $tab_prof, $reg_eleves, $code_modalite_elect_eleves); if(!$update_group) { echo "ERREUR lors de l'association des professeur(s) et élève(s) avec le groupe.
\n"; } } else { echo "ERREUR lors de la création du groupe pour...
\n"; } } } echo "


\n"; } } } echo "

Prise en compte des options des élèves

\n"; //echo "

Import des professeurs principaux
Il est probable que cette information n'était pas dans le fichier de STS, l'import des professeurs principaux risque de ne rien donner... mais qui ne tente rien...

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