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(); } //**************** 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 septième et dernière étape : elle consiste à importer le fichier g_eleves_options.csv contenant les associations des élèves et des enseignements de type 'groupe', c'est-à-dire qui ne corerespondent pas à un enseignement de classe entière.\n"; echo "
Remarque : cette opération n'efface pas 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 "
Remarque : vous pouvez ne spécifier qu'une seule ligne par élève, en indiquant toutes les matières suivies dans le deuxième champ en séparant les identifiants de matières avec un point d'exclamation, mais vous pouvez également avoir une ligne pour une association simple, et avoir autant de lignes que d'enseignements suivis par l'élève.
\n"; echo "Veuillez préciser le nom complet du fichier g_eleves_options.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 // $sql="SELECT * FROM tempo2;"; $res_temp=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_temp)==0) { echo "ERREUR : Aucune matière n'a été trouvée ???
\n"; echo "On remplit/complète la table 'j_eleves_groupes' : ";
$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_options = $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_options = preg_replace("/[^A-Za-z0-9._\-!]/","",trim($reg_options));
if (mb_strlen($reg_options) > 2000) $reg_options = mb_substr($reg_options, 0, 2000); // Juste pour éviter une tentative d'overflow...
// 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.
$test = mysqli_query($GLOBALS["mysqli"], "SELECT login FROM eleves WHERE elenoet = '" . $reg_id_int . "'");
if (mysqli_num_rows($test) == 1) {
$login_eleve = old_mysql_result($test, 0, "login");
// Maintenant on récupère les différentes matières, et on vérifie qu'elles existent
$reg_options = explode("!", $reg_options);
$valid_options = array();
foreach ($reg_options as $option) {
$test = old_mysql_result(mysqli_query($GLOBALS["mysqli"], "SELECT count(matiere) FROM matieres WHERE matiere = '" . $option ."'"), 0);
if ($test == 1) {
$valid_options[] = $option;
}
}
// On a maintenant un tableau avec les options que l'élève doit suivre.
// On récupère la classe de l'élève.
$test = mysqli_query($GLOBALS["mysqli"], "SELECT DISTINCT(id_classe) FROM j_eleves_classes WHERE login = '" . $login_eleve . "'");
if (mysqli_num_rows($test) != 0) {
// L'élève fait bien parti d'une classe
$id_classe = old_mysql_result($test, 0, "id_classe");
// Maintenant on a tout : les options, la classe de l'élève, et son login
// Enfin il reste quand même un truc à récupérer : le nombre de périodes :
$num_periods = old_mysql_result(mysqli_query($GLOBALS["mysqli"], "SELECT count(num_periode) FROM periodes WHERE id_classe = '" . $id_classe . "'"), 0);
// Bon cette fois c'est bon, on a tout. On va donc procéder de la manière suivante :
// - on regarde s'il existe un groupe pour la classe dans la matière considérée
// - on teste pour voir si l'élève n'est pas déjà inscrit dans ce groupe
// - s'il ne l'est pas, on l'inscrit !
// Simple, non ?
// On procède matière par matière :
foreach ($valid_options as $matiere) {
$test = mysqli_query($GLOBALS["mysqli"], "SELECT jgc.id_groupe FROM j_groupes_classes jgc, j_groupes_matieres jgm WHERE (" .
"jgc.id_classe = '" . $id_classe . "' AND " .
"jgc.id_groupe = jgm.id_groupe AND " .
"jgm.id_matiere = '" . $matiere . "')");
if (mysqli_num_rows($test) > 0) {
// Au moins un groupe existe, c'est bon signe
// On passe groupe par groupe pour vérifier si l'élève est déjà inscrit ou pas
for ($j=0;$j Il y a eu " . $error . " erreurs. " . $total . " associations élèves-options ont été enregistrées. Aucune association élève-option n'a été enregistrée??? 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 !
';
} else {
if ($p == 1) $total++;
}
}
}
}
}
}
}
}
$i++;
}
if ($error > 0) {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 !