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/periodes.inc.php";
$message_enregistrement = "Les modifications ont été enregistrées !";
if (isset($is_posted)) {
check_token();
$affiche_message = 'yes';
$mess_avertissement = 'no';
$mess_avertissement2 = 'no';
$msg = '';
// J'appelle les différentes matières existantes :
$callinfo = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM matieres");
$nombre_lignes = mysqli_num_rows($callinfo);
$i = 0;
while ($i < $nombre_lignes) {
$reg_matiere = old_mysql_result($callinfo, $i, "matiere");
$reg_matiere_max_profs = $reg_matiere."_max";
$max = $_POST[$reg_matiere_max_profs];
$m = 0;
While ($m < $max) {
$reg_matiere_prof[$m] = $reg_matiere."_prof".$m;
if (isset($_POST[$reg_matiere_prof[$m]])) $prof[$m] = $_POST[$reg_matiere_prof[$m]];
$m++;
}
$reg_matiere_priority = $reg_matiere."_priority";
if (isset($_POST[$reg_matiere_priority])) {
$priority = $_POST[$reg_matiere_priority];
}
$reg_matiere_coef = $reg_matiere."_coef";
if (isset($_POST[$reg_matiere_coef])) $coef = $_POST[$reg_matiere_coef];
// Si la matière est cochée
if (isset($_POST[$reg_matiere]) and ($_POST[$reg_matiere] == "yes")) {
// On regarde
$test_prof = '';
$m = 0;
While ($m < $max) {
if ((isset($prof[$m])) and ($prof[$m] != '')) $test_prof = 'yes';
$m++;
}
$suppression = '';
if ($test_prof == '') {
// Il n'y a aucun prof associé à la matière
// Il faut donc tester s'il y a des notes ou des appréciations associées
$test1 = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM matieres_notes mn, j_eleves_classes j WHERE (
mn.matiere='".$reg_matiere."' and
mn.login=j.login and
j.id_classe='".$id_classe."'
)");
$nb_test1 = mysqli_num_rows($test1);
$test2 = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM matieres_appreciations ma, j_eleves_classes j WHERE (
ma.matiere='".$reg_matiere."' and
ma.login=j.login and
j.id_classe='".$id_classe."'
)");
$nb_test2 = mysqli_num_rows($test2);
if (($nb_test1 != 0) or ($nb_test2 != 0)) $suppression = 'impossible';
}
if ($suppression != 'impossible') {
// On efface la ligne relatives à la classe et à la matière
// AMELIORATION DU SCRIPT
// Remarque : il faudrait normalement faire des test sur le carnet de notes et interdire la suppression d'un prof
// si celui-ci a commencé à rentrer des notes. Ou bien, il faudrait systématiquement supprimer le carnet de note correspondant
$del = mysqli_query($GLOBALS["mysqli"], "DELETE FROM j_classes_matieres_professeurs
WHERE
(
id_classe='$id_classe' and
id_matiere='$reg_matiere'
)
");
$m = 0;
$compteur = 1;
While ($m < $max) {
if ((isset($prof[$m])) and ($prof[$m] != '')) {
$test = mysqli_query($GLOBALS["mysqli"], "SELECT id_professeur FROM j_classes_matieres_professeurs
WHERE (
id_classe='$id_classe' and
id_matiere='$reg_matiere' and
id_professeur='$prof[$m]'
)");
$nb = mysqli_num_rows($test);
if ($nb == 0) {
$reg_data = mysqli_query($GLOBALS["mysqli"], "INSERT INTO j_classes_matieres_professeurs SET id_professeur='$prof[$m]', priorite='$priority', id_classe='$id_classe', id_matiere='$reg_matiere', ordre_prof='$compteur', coef='$coef', recalcul_rang='y'");
$compteur++;
}
$prof[$m] = '';
}
$m++;
}
$test = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM j_classes_matieres_professeurs
WHERE (
id_classe='$id_classe' and
id_matiere='$reg_matiere'
)");
$nb = mysqli_num_rows($test);
if ($nb == 0) {
$mess_avertissement = 'yes';
}
} else {
$mess_avertissement2 = 'yes';
}
} else {
// Si la matière n'est pas cochée : on vérifie s'il existe une ligne correspondante dans j_classes_matieres_professeurs
// Si oui, on teste s'il y a des notes et appréciations associées
// s'il y a des notes et appréciations associées, on ne peut pas supprimer la matière, sinon, on peut
// On efface la ligne relatives à la classe et à la matière
$test = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM j_classes_matieres_professeurs
WHERE (
id_classe='$id_classe' and
id_matiere='$reg_matiere'
)");
$nb = mysqli_num_rows($test);
if ($nb != 0) {
$query_eleves = mysqli_query($GLOBALS["mysqli"], "select distinct login from j_eleves_classes where id_classe='".$id_classe."'");
$nb_eleves = mysqli_num_rows($query_eleves);
// on va tester s'il y a des notes et appréciations associées
$k = 0;
$suppression = '';
while ($k < $nb_eleves) {
$login_eleve[$k] = old_mysql_result($query_eleves, $k, 'login');
$test1 = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM matieres_notes WHERE (matiere='".$reg_matiere."' and login='".$login_eleve[$k]."')");
$nb_test1 = mysqli_num_rows($test1);
$test2 = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM matieres_appreciations WHERE (matiere='".$reg_matiere."' and login='".$login_eleve[$k]."')");
$nb_test2 = mysqli_num_rows($test2);
if (($nb_test1 != 0) or ($nb_test2 != 0)) $suppression = 'impossible';
$k++;
}
if ($suppression == 'impossible') {
$msg = $msg."--> Impossible de supprimer la matière ".$reg_matiere." car des moyennes ou appréciations ont déjà été rentrées !
";
$message_enregistrement = "Impossible de supprimer une ou plusieurs matières : lisez le message en rouge en haut de la page.";
} else {
// Si le test est concluant
// On supprime la ligne dans j_classes_matieres_professeurs
$del1 = mysqli_query($GLOBALS["mysqli"], "DELETE FROM j_classes_matieres_professeurs
WHERE
(
id_classe='$id_classe' and
id_matiere='$reg_matiere'
)
");
// On supprime les élèves non inscrits
$k = 0;
while ($k < $nb_eleves) {
$del2 = mysqli_query($GLOBALS["mysqli"], "DELETE FROM j_eleves_matieres
WHERE
(
login = '".$login_eleve[$k]."' and
matiere='$reg_matiere'
)
");
$k++;
}
// AMELIORATION DU SCRIPT
// Remarque : il faudrait normalement faire des test sur le carnet de notes et supprimer les données dans
// celui-ci le cas échéant.
// reste à également faire le ménage dans j_eleves_professeurs
$test3 = mysqli_query($GLOBALS["mysqli"], "select distinct j.professeur
from j_eleves_professeurs j, j_professeurs_matieres m
where (
j.id_classe='".$id_classe."' and
j.professeur = m.id_professeur and
m.id_matiere = '".$reg_matiere."'
)"
);
$nb_prof = mysqli_num_rows($test3);
$m = 0;
while ($m < $nb_prof) {
$login_prof = old_mysql_result($test3, $m, 'professeur');
$test4 = mysqli_query($GLOBALS["mysqli"], "select distinct id_professeur from j_classes_matieres_professeurs
where (
id_professeur='".$login_prof."' and
id_classe='".$id_classe."'
)");
if (mysqli_num_rows($test4) == 0)
$del = mysqli_query($GLOBALS["mysqli"], "delete from j_eleves_professeurs
where (
id_classe='".$id_classe."' and
professeur = '".$login_prof."'
)");
$m++;
}
}
}
}
// le cas échéant, pour toutes les matières, on force la valeur de la priorité d'affichage aux valeurs par défaut.
if (isset($_POST['force_defaut'])) {
$priority_defaut = sql_query1("select priority from matieres where matiere='".$reg_matiere."'");
$req = mysqli_query($GLOBALS["mysqli"], "UPDATE j_classes_matieres_professeurs SET priorite='".$priority_defaut."'
WHERE (
id_classe='".$id_classe."' AND
id_matiere='".$reg_matiere."'
)
");
}
$i++;
}
if ($mess_avertissement == 'yes') {$msg .="ATTENTION : Certaines matières sont cochées et n'ont pas de professeurs affectés
L'enregistrement d'une matière n'a lieu que lorqu'au moins un professeur a été affecté.
";}
if ($mess_avertissement2 == 'yes') {$msg .="ATTENTION : vous avez tenté de supprimer une matière en supprimant tous les professeurs associés alors que des notes ou des appréciations attachées à cette matière dans cette classe existent déjà.
";}
}
//**************** EN-TETE **************************************
$titre_page = "Gestion des classes | Gestion des matières";
require_once("../lib/header.inc.php");
//**************** FIN EN-TETE **********************************
?>