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();
}
//INSERT INTO `droits` VALUES ('/utilitaires/verif_groupes.php', 'V', 'F', 'F', 'F', 'F', 'F', 'Vérification des incohérences d appartenances à des groupes', '');
if (!checkAccess()) {
header("Location: ../logout.php?auto=1");
die();
}
function affiche_debug($texte,$e_login){
$debug=0;
if($debug==1){
//if($e_login=="BUNEL_M"){
if(($e_login=="BUNEL_M")||($e_login=="BALESTA_M")){
echo $texte."
\n";
}
}
}
//**************** EN-TETE *****************
$titre_page = "Vérification des affectations dans les groupes";
require_once("../lib/header.inc.php");
//**************** FIN EN-TETE *****************
echo "
Retour accueil | Retour page précédente
"; $verif=isset($_POST['verif']) ? $_POST['verif'] : (isset($_GET['verif']) ? $_GET['verif'] : NULL); //if(!isset($_GET['verif'])){ if(!isset($verif)) { echo "Cette page est destinée à repérer la cause d'éventuelles erreurs du type:
\n"; echo "Warning: old_mysql_result(): Unable to jump to row 0 on MySQL result index 468 in /var/wwws/gepi/lib/groupes.inc.php on line 143\n"; echo "
Pour procéder à la vérification, cliquez sur ce lien: Vérification
(l'opération peut être très longue)
Aucune période n'est encore définie.
\n"; require("../lib/footer.inc.php"); die(); } else { unset($tab_per); while($lig=mysqli_fetch_object($res_per)) { $tab_per[]=$lig->num_periode; } } if(!isset($_POST['c_est_parti'])) { $sql="TRUNCATE tempo2;"; $nettoyage=mysqli_query($GLOBALS["mysqli"], $sql); $sql="SELECT DISTINCT login FROM j_eleves_groupes ORDER BY login;"; $res_ele=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_ele)==0) { echo "Aucun élève n'est encore inscrit dans un groupe.
\n"; require("../lib/footer.inc.php"); die(); } while($lig=mysqli_fetch_object($res_ele)) { $sql="INSERT INTO tempo2 SET col1='$lig->login', col2='verif_grp';"; $res_tempo2=mysqli_query($GLOBALS["mysqli"], $sql); } $sql="CREATE TABLE IF NOT EXISTS tempo3 ( id int(11) NOT NULL auto_increment, col1 VARCHAR(255) NOT NULL, col2 TEXT, PRIMARY KEY (id) ) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;"; $create_table=mysqli_query($GLOBALS["mysqli"], $sql); $sql="TRUNCATE tempo3;"; $nettoyage=mysqli_query($GLOBALS["mysqli"], $sql); $ini=""; } /* // On commence par ne récupérer que les login/periode pour ne pas risquer d'oublier d'élèves // (il peut y avoir des incohérences non détectées si on essaye de récupérer davantage d'infos dans un premier temps) $sql="SELECT DISTINCT login,periode FROM j_eleves_groupes ORDER BY login,periode"; $res_ele=mysql_query($sql); */ $sql="SELECT * FROM tempo3 WHERE col1='rapport_verif_grp' ORDER BY id;"; $res_rapport=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_rapport)>0) { while($lig_rapp=mysqli_fetch_object($res_rapport)){ echo $lig_rapp->col2; } } $nb=20; $sql="SELECT col1 AS login FROM tempo2 WHERE col2='verif_grp' ORDER BY col1 LIMIT $nb"; //echo "$sql\nParcours des login commençant par la lettre $ini
\n"; echo $info; $chaine_rapport.=$info; } for($loop=0;$loop\n";
$info.="$lig_ele->login de $chaine_classes est inscrit à des groupes pour la période $num_periode, mais n'est pas dans la classe pour cette période.
\n";
echo $info;
$chaine_rapport.=$info;
echo $chaine_msg;
$chaine_rapport.=$chaine_msg;
// Contrôler à quelles classes les groupes sont liés.
unset($tab_tmp_grp);
$tab_tmp_grp=array();
if(isset($tab_tmp_clas)){unset($tab_tmp_clas);}
$tab_tmp_clas=array();
while($lig_grp=mysqli_fetch_object($res_jeg)){
$tab_tmp_grp[]=$lig_grp->id_groupe;
$sql="SELECT DISTINCT c.id,c.classe FROM classes c,j_groupes_classes jgc WHERE jgc.id_classe=c.id AND jgc.id_groupe='$lig_grp->id_groupe'";
$res_grp2=mysqli_query($GLOBALS["mysqli"], $sql);
while($lig_tmp_clas=mysqli_fetch_object($res_grp2)){
if(!in_array($lig_tmp_clas->classe,$tab_tmp_clas)){
$tab_tmp_clas[]=$lig_tmp_clas->classe;
}
}
}
$info="
\n";
$info.="Les groupes dont $lig_ele->login est membre sont liés ";
echo $info;
$chaine_rapport.=$info;
if(count($tab_tmp_clas)>1){
$info="aux classes suivantes: ";
}
else{
$info="à la classe suivante: ";
}
echo $info;
$chaine_rapport.=$info;
$info=$tab_tmp_clas[0];
echo $info;
$chaine_rapport.=$info;
for($i=1;$i
\n";
$info.="$lig_ele->login est inscrit à des groupes pour la période $num_periode, mais n'est dans aucune classe.
\n";
// ... dans aucune classe sur aucune période.
$info.="Il va falloir l'affecter dans une classe pour pouvoir supprimer ses inscriptions à des groupes.
\n";
$info.="
\n";
//echo "Il semble que $lig_ele->login de la classe $lig_clas->id_classe soit inscrit dans le groupe $lig_grp->id_groupe alors que ce groupe n'est pas associé à la classe dans 'j_groupes_classes'.
\n";
$info.="$lig_ele->login est inscrit en période $num_periode dans le groupe $grp_tmp (groupe n°$lig_grp->id_groupe) alors que ce groupe n'est pas associé à la classe $clas_tmp dans 'j_groupes_classes'.
\n";
echo $info;
$chaine_rapport.=$info;
// /groupes/edit_eleves.php?id_groupe=285&id_classe=8
//$sql="SELECT id_classe FROM j_groupes_classes WHERE id_groupe='$lig_grp->id_groupe';";
$sql="SELECT jgc.id_classe, c.classe FROM j_groupes_classes jgc, classes c WHERE jgc.id_groupe='$lig_grp->id_groupe' AND jgc.id_classe=c.id;";
$res_tmp_clas=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_tmp_clas)>0){
//$lig_tmp_clas=mysql_fetch_object($res_tmp_clas);
//echo "Vous pouvez tenter de décocher l'élève de $clas_tmp du groupe $grp_tmp dans cette page si il s'y trouve.
\n";
$info="Vous pouvez tenter de décocher l'élève de $clas_tmp du groupe $grp_tmp dans l'une des pages suivantes ";
echo $info;
$chaine_rapport.=$info;
$tab_tmp_class=array();
$tab_tmp_classe=array();
while($lig_tmp_clas=mysqli_fetch_object($res_tmp_clas)){
$tab_tmp_class[]=$lig_tmp_clas->id_classe;
$tab_tmp_classe[]=$lig_tmp_clas->classe;
$info="$lig_tmp_clas->classe, ";
echo $info;
$chaine_rapport.=$info;
}
$info="si il s'y trouve.
\n";
echo $info;
$chaine_rapport.=$info;
}
$info="Si aucune erreur n'est relevée non plus dans la(es) classe(s) de ";
$info.="$clas_tmp, \n";
echo $info;
$chaine_rapport.=$info;
for($i=0;$i
\n";
$info.="
\n";
$info.="$lig_ele->login est inscrit dans plusieurs classes sur la période $num_periode:
\n";
echo $info;
$chaine_rapport.=$info;
while($lig_clas=mysqli_fetch_object($res_jec)){
$sql="SELECT classe FROM classes WHERE id='$lig_clas->id_classe'";
$res_tmp=mysqli_query($GLOBALS["mysqli"], $sql);
$lig_tmp=mysqli_fetch_object($res_tmp);
$clas_tmp=$lig_tmp->classe;
$info="Classe de $clas_tmp (n°$lig_clas->id_classe)
\n";
echo $info;
$chaine_rapport.=$info;
}
$info="Cela ne devrait pas être possible.
\n";
$info.="Faites le ménage dans les effectifs des classes ci-dessus.\n";
$info.="
Aucune erreur d'affectation dans des groupes/classes n'a été détectée.
\n"; } else{ echo "Une ou des erreurs ont été relevées.
\n";
echo "Pour corriger, il faut passer par 'Gestion des bases/Gestion des classes/Gérer les élèves' et contrôler pour quelles périodes l'élève est dans la classe.
\n";
echo "Puis, cliquer sur le lien 'Matières suivies' pour cet élève et décocher l'élève des périodes souhaitées appropriées.
\n";
echo "
Il se peut également qu'un nettoyage de la base (étape des Groupes) soit nécessaire.
\n";
echo "Prenez soin de faire une sauvegarde de la base auparavant par précaution.
\n";
}
echo "
On parcourt la table '".$table[$i]."'.
\n"; while($ligne=mysqli_fetch_array($res_grp1)){ $sql="SELECT 1=1 FROM groupes WHERE id='".$ligne[0]."'"; $res_test=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_test)==0){ echo "Erreur: Le groupe d'identifiant $ligne[0] est utilisé dans $table[$i] alors que le groupe n'existe pas dans la table 'groupes'.Aucune erreur d'identifiant de groupe n'a été relevée dans les tables 'j_groupes_classes', 'j_groupes_matieres', 'j_groupes_professeurs' et 'j_eleves_groupes'.
\n"; } else{ echo "Une ou des erreurs ont été relevées.
\n";
echo "Pour corriger, vous devriez procéder à un nettoyage de la base (étape des Groupes).
\n";
echo "Prenez soin de faire une sauvegarde de la base auparavant par précaution.
\n";
echo "