Bonjour,

Suite à un problème rencontré par un parent d’élève j’ai découvert un petit bug 
qui est lié au passage de MySQL en 5.7

Le problème :
Lorsqu’un parent affiche le nouveau carnet de notes de son enfant, celui-ci 
apparait comme n’étant rattaché à aucun groupe, par contre avec l’Interface 
Classique cela s’affiche correctement.
Le compte de l’élève et du responsable sont bien configurés

La recherche :
D’après les logs il y avait un problème au niveau de la requête $nombre_groupes 
= mysqli_num_rows($appel_liste_groupes); (ligne 522, fichier : 
/cahier_notes/extraction_donnees_releves_notes.php)
J’ai testé les requêtes sql (ligne 490 et 506) directement dans la base et 
effectivement elles se mettaient en erreur.
Le serveur refuse la requête car les  champs présents dans ORDER BY ne sont pas 
dans SELECT.
Effectivement si l’on ajoute les champs  du ORDER BY dans SELECT tout 
refonctionne correctement
Visiblement le passage à MySQL 5.7 oblige à ajouter les champs qui se trouvent 
dans ORDER BY dans le SELECT :c/

Résultat (à partir de la ligne 488,  fichier :  
/cahier_notes/extraction_donnees_releves_notes.php) :
if ($affiche_categories) {
               // On utilise les valeurs spécifiées pour la classe en question
               $sql="SELECT DISTINCT jgc.id_groupe, jgm.id_matiere matiere, 
jgc.categorie_id, jmcc.priority,jgc.priorite,m.nom_complet ".
               "FROM j_eleves_groupes jeg, j_groupes_classes jgc, 
j_groupes_matieres jgm, j_matieres_categories_classes jmcc, matieres m " .
               "WHERE ( " .
               "jeg.login = '" . $current_eleve_login[$i] ."' AND " .
               "jgc.id_groupe = jeg.id_groupe AND " .
               "jgc.categorie_id = jmcc.categorie_id AND " .
               "jgc.id_classe = '".$id_classe."' AND " .
               "jgm.id_groupe = jgc.id_groupe AND " .
               "m.matiere = jgm.id_matiere" .
               " AND jgc.id_groupe NOT IN (SELECT id_groupe FROM 
j_groupes_visibilite WHERE domaine='cahier_notes' AND visible='n')";

               if($choix_periode!="intervalle") {$sql.=" AND 
jeg.periode='$periode_num'";}

               $sql.=") " .
               "ORDER BY jmcc.priority,jgc.priorite,m.nom_complet";
} else {
               $sql="SELECT DISTINCT jgc.id_groupe, jgc.categorie_id, jgc.coef, 
jgm.id_matiere matiere, jgc.priorite, jgm.id_matiere " .
               "FROM j_groupes_classes jgc, j_groupes_matieres jgm, 
j_eleves_groupes jeg " .
               "WHERE ( " .
               "jeg.login = '" . $current_eleve_login[$i] . "' AND " .
               "jgc.id_groupe = jeg.id_groupe AND " .
               "jgc.id_classe = '".$id_classe."' AND " .
               "jgm.id_groupe = jgc.id_groupe" .
               " AND jgc.id_groupe NOT IN (SELECT id_groupe FROM 
j_groupes_visibilite WHERE domaine='cahier_notes' AND visible='n')";

               if($choix_periode!="intervalle") {$sql.=" AND 
jeg.periode='$periode_num'";}

               $sql.=") " .
               "ORDER BY jgc.priorite,jgm.id_matiere";
}

$appel_liste_groupes = mysqli_query($GLOBALS["mysqli"], $sql);
$nombre_groupes = mysqli_num_rows($appel_liste_groupes);

Configuration :
Ubuntu 16.04
Mysql 5.7.27

Conclusion :
               Est il possible d’intégrer cette modif à Gepi et de vérifier si 
il n’y a pas d’autres requêtes qui nécessiteraient une adaptation.

D’avance merci

Cordialement
Philippe Lemaire
_________________________________________________________________________________
Documentation Gepi en ligne : http://www.sylogix.org/projects/gepi/wiki
Pour modifier ou r�silier votre abonnement � cette liste :
https://lists.sylogix.net/mailman/listinfo/gepi-users

Répondre à