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(); } $liste_tables_del = array("j_eleves_classes"); //**************** EN-TETE ***************** $titre_page = "Outil d'initialisation de l'année : Importation des matières"; require_once("../lib/header.inc.php"); //************** FIN EN-TETE *************** //debug_var(); $en_tete=isset($_POST['en_tete']) ? $_POST['en_tete'] : "no"; ?>
Vous allez effectuer la cinquième étape : elle consiste à importer le fichier g_eleves_classes.csv contenant les données relatives aux disciplines.
\n"; echo "Remarque : cette opération n'efface par les classes. Elle ne fait qu'une mise à jour, le cas échéant, de la liste des matières.
\n"; echo "Les champs suivants doivent être présents, dans l'ordre, et séparés par un point-virgule :
\n"; echo "Veuillez préciser le nom complet du fichier g_eleves_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++;
}
$sql="SELECT * FROM tempo2;";
$res_temp=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_temp)==0) {
echo "
ERREUR : Aucune association élève/classe n'a été trouvée ???
\n"; echo "On remplit les tables 'classes', 'periodes' et 'j_eleves_classes' : ";
// Pour ne pas mettre une info_action par classe si aucune période edt_calendrier n'est encore saisie
$sql="SELECT 1=1 FROM edt_calendrier WHERE classe_concerne_calendrier!=';' AND classe_concerne_calendrier!='';";
$test_cal=mysqli_query($GLOBALS["mysqli"], $sql);
$nb_edt_cal=mysqli_num_rows($test_cal);
// On ne met alors qu'une seule info_action
if($nb_edt_cal==0) {
$info_action_titre="Dates de périodes et de vacances";
$info_action_texte="Pensez à importer les périodes de vacances et saisir ou mettre à jour les dates de périodes et les classes associées dans Emplois du temps/Gestion/Gestion du calendrier.
Les dates de vacances sont notamment utilisées pour les totaux d'absences.";
$info_action_destinataire=array("administrateur");
$info_action_mode="statut";
enregistre_infos_actions($info_action_titre,$info_action_texte,$info_action_destinataire,$info_action_mode);
}
$i = 0;
// Compteur d'erreurs
$error = 0;
// Compteur d'enregistrement
$total = 0;
while ($lig=mysqli_fetch_object($res_temp)) {
$reg_id_int = $lig->col1;
$reg_classe = $lig->col2;
// On nettoie et on vérifie :
$reg_id_int = preg_replace("/[^0-9]/","",trim($reg_id_int));
if (mb_strlen($reg_id_int) > 50) $reg_id_int = mb_substr($reg_id_int, 0, 50);
$reg_classe = preg_replace("/[^A-Za-z0-9._ \-]/","",trim($reg_classe));
//$reg_classe=nettoyer_caracteres_nom($reg_classe, "an", " _-", "");
if (mb_strlen($reg_classe) > 100) $reg_classe = mb_substr($reg_classe, 0, 100);
if(($reg_id_int!='')&&($reg_classe!='')){
// Première étape : on s'assure que l'élève existe et on récupère son login... S'il n'existe pas, on laisse tomber.
$sql="SELECT login FROM eleves WHERE elenoet = '" . $reg_id_int . "'";
//echo "$sql
";
$test = mysqli_query($GLOBALS["mysqli"], $sql);
if (mysqli_num_rows($test) == 1) {
$login_eleve = old_mysql_result($test, 0, "login");
// Maintenant que tout est propre et que l'élève existe, on fait un test sur la table pour voir si la classe existe
$sql="SELECT id FROM classes WHERE classe = '" . mysqli_real_escape_string($GLOBALS["mysqli"], $reg_classe) . "'";
//echo "$sql
";
$test = mysqli_query($GLOBALS["mysqli"], $sql);
if (mysqli_num_rows($test) == 0) {
// Test négatif : aucune classe avec ce nom court... on créé !
$sql="INSERT INTO classes SET " .
"classe = '" . mysqli_real_escape_string($GLOBALS["mysqli"], $reg_classe) . "', " .
"nom_complet = '" . mysqli_real_escape_string($GLOBALS["mysqli"], $reg_classe) . "', " .
"format_nom = 'np', " .
"format_nom_eleve = 'np', " .
"display_rang = 'n', " .
"display_address = 'n', " .
"display_coef = 'y'";
echo "$sql
";
$insert1 = mysqli_query($GLOBALS["mysqli"], $sql);
// On récupère l'ID de la classe nouvelle créée, pour enregistrer les périodes
$classe_id = ((is_null($___mysqli_res = mysqli_insert_id($GLOBALS["mysqli"]))) ? false : $___mysqli_res);
$tab_id_classe=array();
$sql="SELECT id FROM classes ORDER BY classe;";
$res_classe = mysqli_query($GLOBALS["mysqli"], $sql);
while($lig_classe=mysqli_fetch_object($res_classe)) {
$tab_id_classe[]=$lig_classe->id;
}
// Associer aux vacances:
$sql="SELECT * FROM edt_calendrier WHERE numero_periode='0' AND etabvacances_calendrier='1';";
$res_cal = mysqli_query($GLOBALS["mysqli"], $sql);
while($lig_cal=mysqli_fetch_object($res_cal)) {
$chaine_id_classe="";
$tab_id_classe_deja=explode(";", $lig_cal->classe_concerne_calendrier);
for($loop=0;$loop
";
$res_cal = mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_cal)==1) {
$lig_cal=mysqli_fetch_object($res_cal);
$tab_id_classe_deja=explode(";", $lig_cal->classe_concerne_calendrier);
$chaine_id_classe="";
for($loop=0;$loop
";
$update_per=mysqli_query($GLOBALS["mysqli"], $sql);
}
elseif($nb_edt_cal>0) {
$info_action_titre="Dates de périodes pour la classe ".get_nom_classe($classe_id);
$info_action_texte="Pensez à contrôler que la classe ".get_nom_classe($classe_id)." est bien associée aux périodes et vacances dans Emplois du temps/Gestion/Gestion du calendrier.";
$info_action_destinataire=array("administrateur");
$info_action_mode="statut";
enregistre_infos_actions($info_action_titre,$info_action_texte,$info_action_destinataire,$info_action_mode);
}
}
$num_periods = 3;
} else {
// La classe existe
// On récupère son ID
$classe_id = old_mysql_result($test, 0, "id");
$num_periods = old_mysql_result(mysqli_query($GLOBALS["mysqli"], "SELECT count(num_periode) FROM periodes WHERE id_classe = '" . $classe_id . "'"), 0);
}
// Maintenant qu'on a l'ID de la classe et le nombre de périodes, on enregistre l'association
for ($p=1;$p<=$num_periods;$p++) {
$sql="INSERT INTO j_eleves_classes SET login = '" . $login_eleve . "', " .
"id_classe = '" . $classe_id . "', " .
"periode = '" . $p . "'";
//echo "$sql
";
$insert = mysqli_query($GLOBALS["mysqli"], $sql);
}
if (!$insert) {
$error++;
echo "".mysqli_error($GLOBALS["mysqli"])."
\n";
} else {
$total++;
}
}
}
$i++;
//if (!isset($_POST['ligne'.$i.'_id_int'])) $go = false;
}
$sql="update periodes set date_verrouillage='0000-00-00 00:00:00';";
$res=mysqli_query($GLOBALS["mysqli"], $sql);
if($res) {
echo "Réinitialisation des dates de verrouillage de périodes effectuée.
";
}
else {
echo "Erreur lors de la réinitialisation des dates de verrouillage de périodes.
";
}
if ($error > 0) echo "
Il y a eu " . $error . " erreurs.
\n"; if ($total > 0) echo "" . $total . " associations eleves-classes ont été enregistrées.
\n"; echo "\n"; } else if ($_POST['action'] == "upload_file") { check_token(false); // // Le fichier vient d'être envoyé et doit être traité // On va donc afficher le contenu du fichier tel qu'il va être enregistré dans Gepi // en proposant des champs de saisie pour modifier les données si on le souhaite // if(isset($en_tete)) { $_SESSION['init_csv_ligne_entete']=$en_tete; } $csv_file = isset($_FILES["csv_file"]) ? $_FILES["csv_file"] : NULL; // On vérifie le nom du fichier... Ce n'est pas fondamentalement indispensable, mais // autant forcer l'utilisateur à être rigoureux if(my_strtolower($csv_file['name']) == "g_eleves_classes.csv") { // Le nom est ok. On ouvre le fichier $fp=fopen($csv_file['tmp_name'],"r"); if(!$fp) { // Aie : on n'arrive pas à ouvrir le fichier... Pas bon. echo "Impossible d'ouvrir le fichier CSV !
\n"; echo "Cliquer ici pour recommencer !
\n"; } else { // Fichier ouvert ! On attaque le traitement // On va stocker toutes les infos dans un tableau // Une ligne du CSV pour une entrée du tableau $data_tab = array(); //========================= // On lit une ligne pour passer la ligne d'entête: if($en_tete=="yes") { $ligne = fgets($fp, 4096); echo "A titre d'information, la ligne d'entête passée est la suivante :
$ligne
Si il ne s'agit pas d'une ligne d'entête, vous pouvez refaire cette étape.
Aucun fichier n'a été sélectionné !
\n";
echo "Cliquer ici pour recommencer !
Le fichier sélectionné n'est pas valide !
\n";
echo "Cliquer ici pour recommencer !