[gepi-users] Tests GEPI 1.4.3beta

Stephane Boireau stephane.boireau at ac-rouen.fr
Dim 30 Juil 10:24:45 CEST 2006


Bonjour,

Le Vendredi 14 Juillet 2006 19:52, Thomas BELLIARD a écrit :
> Depuis hier soir est disponible une nouvelle version de test de Gepi,
> avant-première de ce qui deviendra la prochaine version stable
> disponible pour la rentrée.

Je viens de faire des essais d'initialisation à partir des fichiers de
GEP avec le paquet gepi 1.4.3beta télécharé le 15/07/2006.
Dans la phase de nettoyage, j'obtiens:
====================================
Sixième phase d'initialisation
Nettoyage des tables

ATTENTION ...
L'initialisation des données de l'année n'est pas terminée, certaines
données
concernant les élèves, les classes, les professeurs ou les matières sont
manquantes. La procédure ne peut continuer !
====================================

Avec les mêmes fichiers, en remettant en place un GEPI 1.4.2, j'obtiens le
nettoyage.

Avez-vous une idée de la cause?

Obtenez-vous le même problème?

Merci.

...

Faute d'accès internet, je n'ai pas posté et j'ai creusé en commençant
par le début de l'import et en décortiquant chaque page pour comprendre
comment cela marche et quelles tables sont affectées à chaque étape.
Je suis tombé sur plusieurs choses.

(1)
Un problème dans initialisation/professeurs.php (non propre à la version
1.4.3):
Pour certains utilisateurs, un nouveau login est créé à chaque
importation, même si on utilise les mêmes fichiers de GEP.

Le champ prénom est découpé:
	$prenoms = explode(" ",$affiche[1]);
	$premier_prenom = $prenoms[0];

On teste l'existence sur le premier prénom:
	$test_exist = mysql_query("select login from utilisateurs where (
	nom='".traitement_magic_quotes($affiche[0])."' and
	prenom = '".traitement_magic_quotes($premier_prenom)."' and
	statut='professeur'
	)");
Et on insère par la suite $affiche[1] au lieu de seulement mettre le
premier prénom.
	$res = mysql_query("INSERT INTO utilisateurs VALUES ('".$login_prof."',
'".$affiche[0]."', '".$affiche[1]."', '".$civilite."', '".$pwd."', '',
'professeur', 'actif', 'y', '')");
Il faut faire un choix.
Soit on teste sur l'ensemble des prénoms.
Soit on n'insère que le premier prénom dans 'utilisateurs' (mais cela
peut poser un problème de doublons).
Sinon, certains 'utilisateurs' sont recréés à chaque import du
F_WIND.DBF avec un login qui s'incrémente.
L'objectif semblait être de mettre sous la forme de prénom composé ce
champ prénom, avec un tiret, mais cela merdouille.

Tous les anciens logins deviennent (restent) inactifs.

Plus simple:
Si il y a un prénom "composé", on modifie le test de:
	$test_exist2 = mysql_query("select login from utilisateurs
	where (
	nom='".traitement_magic_quotes($affiche[0])."' and
	prenom = '".traitement_magic_quotes($prenom_compose)."' and
	statut='professeur'
	)");
en:
	$test_exist2 = mysql_query("select login from utilisateurs
	where (
	nom='".traitement_magic_quotes($affiche[0])."' and
	prenom = '".traitement_magic_quotes($affiche[1])."' and
	statut='professeur'
	)");
Du coup, cela devrait fonctionner.

J'ai testé.
On récupère bien les anciens logins.




(2)
Un problème dans initialisation/prof_disc_classe.php avec la table
'groupes' qui n'est jamais remplie parce que la requête présente un
problème.
L'insertion d'un groupe s'effectue ainsi:
					$res = mysql_query("insert into groupes set name = '" . $affiche[0]
. "', description = '" . $matiere_nom . "', recalcul_rang = 'y'");
					$group_id = mysql_insert_id();
Il n'y a pas de champ 'recalcul_rang' dans cette table 'groupes'.
Du coup, l'insertion échoue et 'groupes' reste vide.
Il en résulte de plus que le $group_id est toujours à zéro (on pourrait
ajouter un test sur ce mysql_insert_id qui ne devrait jamais valloir zéro).
Par ailleurs, si on effectue l'import des F_MEN et F_GPD à plusieurs
reprises, les tables j_groupes* ne sont jamais vidées...
Il faut aussi vider j_eleves_groupes

En mettant
					$res = mysql_query("insert into groupes set name = '" . $affiche[0]
. "', description = '" . $matiere_nom . "'");
					$group_id = mysql_insert_id();
les insertions ont l'air de s'effectuer correctement (consultation avec
phpMyAdmin).

Reste qu'en poursuivant, j'obtiens (sans erreur affichée) le message:

Sixième phase d'initialisation
Nettoyage des tables

ATTENTION ...
L'initialisation des données de l'année n'est pas terminée, certaines
données concernant les élèves, les classes, les professeurs ou les
matières sont manquantes. La procédure ne peut continuer !

Je n'ai pas encore décortiqué la fin de l'importation.
Je pourrai peut-être trouver la cause moi-même, mais ayant obtenu d'un
voisin d'envoyer un mail via sa connexion, je profite et je poste avant
d'aller plus loin.




J'ai vidé la base et réinstallé la base, puis refait l'importation.
Malgré mes fichiers PHP modifiés/corrigés, j'obtiens toujours la même
erreur au nettoyage.

Remarque:
Quand je vais dans /matieres/matieres_param.php, toutes les matières
(dont certaines assez folkloriques) sont présentes, mais si je clique
sur 'Paramétrage par lots', les classes sont là, mais aucune matière
n'apparait dans le deuxième tableau, contrairement à ce qui se passe
avec GEPI 1.4.2

Apparemment, ma table 'j_classes_matieres_professeurs' est vide.
Quand aurait-elle dû être remplie?
Je n'ai pas encore eu le temps de chercher...

Des idées?

Merci.
-- 
Stéphane Boireau
Animateur TICE du Secteur de Bernay/Pont-Audemer




Plus d'informations sur la liste de diffusion gepi-users