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(); } include("../lib/initialisation_annee.inc.php"); $liste_tables_del = $liste_tables_del_etape_matieres; //**************** EN-TETE ***************** $titre_page = "Outil d'initialisation de l'année : Importation des matières"; require_once("../lib/header.inc.php"); //************** FIN EN-TETE *************** $en_tete=isset($_POST['en_tete']) ? $_POST['en_tete'] : "no"; ?>
Vous allez effectuer la sixième étape : elle consiste à importer le fichier g_prof_disc_classes.csv contenant les données relatives aux enseignements.
\n"; echo "ATTENTION ! Avec cette opération, vous effacez tous les groupes d'enseignement qui avaient été définis l'année dernière. Ils seront écrasés par ceux que vous allez importer avec la procédure courante.
\n"; echo "Les champs suivants doivent être présents, dans l'ordre, et séparés par un point-virgule :
\n"; echo "Exemple de ligne pour un enseignement général :
\n" .
" DUPONT.JEAN;MATHS;1S1;CG
\n" .
"Exemple de ligne pour un enseignement optionnel avec des élèves de plusieurs classes :
\n" .
" DURANT.PATRICE;ANGL2;1S1!1S2!1S3;OPT
Veuillez préciser le nom complet du fichier g_prof_disc_classes.csv.
\n"; echo "\n"; } else { // // Quelque chose a été posté // if ($_POST['action'] == "save_data") { check_token(false); // // On enregistre les données dans la base. // Le fichier a déjà été affiché, et l'utilisateur est sûr de vouloir enregistrer // echo "On vide d'abord les tables suivantes : ";
$j=0;
$k=0;
while ($j < count($liste_tables_del)) {
$sql="SHOW TABLES LIKE '".$liste_tables_del[$j]."';";
//echo "$sql
";
$test = sql_query1($sql);
if ($test != -1) {
if($k>0) {echo ", ";}
$sql="SELECT 1=1 FROM $liste_tables_del[$j];";
$res_test_tab=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_test_tab)>0) {
$sql="DELETE FROM $liste_tables_del[$j];";
$del = @mysqli_query($GLOBALS["mysqli"], $sql);
echo "".$liste_tables_del[$j]."";
echo " (".mysqli_num_rows($res_test_tab).")";
}
else {
echo $liste_tables_del[$j];
}
$k++;
}
$j++;
}
// 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);
$sql="SELECT * FROM tempo4;";
$res_tempo4=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_tempo4)==0) {
echo "
ERREUR : Aucune association professeur/matière/classe/type n'a été trouvée ???
\n"; echo "On remplit les tables 'matieres', 'groupes', 'j_groupes_matieres', 'j_groupes_professeurs', 'j_groupes_classes' et 'j_eleves_groupes' : ";
$i = 0;
// Compteur d'erreurs
$error = 0;
// Compteur d'enregistrement
$total = 0;
while ($lig=mysqli_fetch_object($res_tempo4)) {
$reg_prof = $lig->col1;
$reg_matiere = $lig->col2;
$reg_classes = $lig->col3;
$reg_type = $lig->col4;
// On nettoie et on vérifie :
$reg_prof = preg_replace("/[^A-Za-z0-9._]/","",trim(my_strtoupper($reg_prof)));
if (mb_strlen($reg_prof) > 50) $reg_prof = mb_substr($reg_prof, 0, 50);
$reg_matiere = preg_replace("/[^A-Za-z0-9._\-]/","",trim(my_strtoupper($reg_matiere)));
if (mb_strlen($reg_matiere) > 50) $reg_matiere = mb_substr($reg_matiere, 0, 50);
$reg_classes = preg_replace("/[^A-Za-z0-9._ \-!]/","",trim($reg_classes));
if (mb_strlen($reg_classes) > 2000) $reg_classes = mb_substr($reg_classes, 0, 2000); // C'est juste pour éviter une tentative d'overflow...
$reg_type = preg_replace("/[^A-Za-z]/","",trim(my_strtoupper($reg_type)));
if ($reg_type != "CG" AND $reg_type != "OPT") $reg_type = "";
// Première étape : on s'assure que le prof existe. S'il n'existe pas, on laisse tomber.
$sql="SELECT count(login) FROM utilisateurs WHERE login = '" . $reg_prof . "';";
//echo "$sql Opération terminée. Il y a eu " . $error . " erreurs. " . $total . " groupes ont été enregistrés. Impossible d'ouvrir le fichier CSV ! Cliquer ici pour recommencer ! A titre d'information, la ligne d'entête passée est la suivante : Aucun fichier n'a été sélectionné ! Le fichier sélectionné n'est pas valide !
";
$test = old_mysql_result(mysqli_query($GLOBALS["mysqli"], $sql),0);
if ($test == 1) {
// Le prof existe. cool. Maintenant on récupère la matière.
//$sql="SELECT nom_complet FROM matieres WHERE matiere = '" . mysqli_real_escape_string($GLOBALS["mysqli"], $reg_matiere) . "'";
$sql="SELECT nom_complet FROM matieres WHERE matiere = '" . $reg_matiere . "'";
//echo "$sql
";
$test = mysqli_query($GLOBALS["mysqli"], $sql);
if (mysqli_num_rows($test) == 1) {
// La matière existe
// On récupère le nom complet de la matière
$reg_matiere_complet = old_mysql_result($test, 0, "nom_complet");
// Maintenant on en arrive aux classes
// On récupère un tableau :
$reg_classes = explode("!", $reg_classes);
// On détermine le type de groupe
if (count($reg_classes) > 1) {
// On force le type "OPT" s'il y a plusieurs classes
$reg_type = "OPT";
} else {
if ($reg_type == "") {
// Si on n'a qu'une seule classe et que rien n'est spécifié, on a par défaut
// un cours général
$reg_type = "CG";
}
}
// Si on arrive ici, c'est que normalement tout est bon.
// On va quand même s'assurer qu'on a des classes valides.
$valid_classes = array();
foreach ($reg_classes as $classe) {
$sql="SELECT id FROM classes WHERE classe = '" . $classe . "'";
//echo "$sql
";
$test = mysqli_query($GLOBALS["mysqli"], $sql);
if (mysqli_num_rows($test) == 1) $valid_classes[] = old_mysql_result($test, 0, "id");
}
if (count($valid_classes) > 0) {
// C'est bon, on a au moins une classe valide. On peut créer le groupe !
$sql="INSERT INTO groupes SET name = '" . $reg_matiere . "', description = '" . mysqli_real_escape_string($GLOBALS["mysqli"], html_entity_decode($reg_matiere_complet)) . "'";
//echo "$sql
";
$new_group = mysqli_query($GLOBALS["mysqli"], $sql);
$group_id = ((is_null($___mysqli_res = mysqli_insert_id($GLOBALS["mysqli"]))) ? false : $___mysqli_res);
if (!$new_group) {
echo "".mysqli_error($GLOBALS["mysqli"]).'
';
}
// Le groupe est créé. On associe la matière.
$sql="INSERT INTO j_groupes_matieres SET id_groupe = '".$group_id."', id_matiere = '" . $reg_matiere . "'";
//echo "$sql
";
$res = mysqli_query($GLOBALS["mysqli"], $sql);
if (!$res) {
echo "".mysqli_error($GLOBALS["mysqli"]).'
';
}
// On associe le prof
$sql="INSERT INTO j_groupes_professeurs SET id_groupe = '" . $group_id . "', login = '" . $reg_prof . "'";
//echo "$sql
";
$res = mysqli_query($GLOBALS["mysqli"], $sql);
if (!$res) {
echo "".mysqli_error($GLOBALS["mysqli"]).'
';
}
// On associe la matière au prof
$sql="INSERT INTO j_professeurs_matieres SET id_professeur = '" . $reg_prof . "', id_matiere = '" . $reg_matiere . "'";
//echo "$sql
";
$res = mysqli_query($GLOBALS["mysqli"], $sql);
// On associe le groupe aux classes (ou à la classe)
foreach ($valid_classes as $classe_id) {
$sql="INSERT INTO j_groupes_classes SET id_groupe = '" . $group_id . "', id_classe = '" . $classe_id ."'";
//echo "$sql
";
$res = mysqli_query($GLOBALS["mysqli"], $sql);
if (!$res) {
echo "".mysqli_error($GLOBALS["mysqli"]).'
';
}
}
// Si le type est à "CG", on associe les élèves de la classe au groupe
if ($reg_type == "CG") {
// On récupère le nombre de périodes pour la classe
$sql="SELECT count(num_periode) FROM periodes WHERE id_classe = '" . $valid_classes[0] . "'";
//echo "$sql
";
$periods = old_mysql_result(mysqli_query($GLOBALS["mysqli"], $sql), 0);
$sql="SELECT DISTINCT(login) FROM j_eleves_classes WHERE id_classe = '" . $valid_classes[0] . "'";
//echo "$sql
";
$get_eleves = mysqli_query($GLOBALS["mysqli"], $sql);
$nb = mysqli_num_rows($get_eleves);
for ($e=0;$e<$nb;$e++) {
$current_eleve = old_mysql_result($get_eleves, $e, "login");
for ($p=1;$p<=$periods;$p++) {
$sql="INSERT INTO j_eleves_groupes SET login = '" . $current_eleve . "', id_groupe = '" . $group_id . "', periode = '" . $p . "'";
//echo "$sql
";
$res = mysqli_query($GLOBALS["mysqli"], $sql);
if (!$res) {
echo "".mysqli_error($GLOBALS["mysqli"]).'
';
}
}
}
}
if (!$new_group) {
$error++;
} else {
$total++;
}
} // -> Fin du test si on a au moins une classe valide
} // -> Fin du test où la matière existe
} // -> Fin du test où le prof existe
$i++;
}
echo "
$ligne
Si il ne s'agit pas d'une ligne d'entête, vous pouvez refaire cette étape.
\n";
echo "Cliquer ici pour recommencer !
\n";
echo "Cliquer ici pour recommencer !