Bonjour à tous,
Je suis en train d'étendre la gestion des droits visiteurs à l'aide du
plugin champ extra et des formulaires CVT et il y a un petit quelque
chose que je ne saisis pas.
Sur le principe, un visiteur peut modifier ses données une fois qu'il
est authentifié. Lorsqu'il s'inscrit sur le site en question, je lui
demande un email et un identifiant. Une fois l'accès ouvert, il doit
remplir d'autres champs, en particulier sa catégorie
socio-professionnelle et un autre champ qui est un 'checkbox'.
Le formulaire fonctionne parfaitement, les données sont enregistrées
dans la base de données. J'ai vérifié en ligne de commande, pas de
problème, c'est bien le cas.
Or, lorsque l'utilisateur recharge le formulaire pour le modifier, tous
les champs sont rechargés à l'exception de la valeur de la checkbox.
Plus précisément, cette valeur est lu à l'ouverture de la session et
plus jamais remise à jour plus tard.
Je viens d'afficher le tableau contenant la session avec
var_dump($GLOBALS['visiteur_session']) dans le script de chargement.
Cela me renvoie :
array(37)
{ ["prefs"]=> array(5)
{ ["couleur"]=> int(9) ["display"]=> int(2) ["display_navigation"]=>
string(22) "navigation_avec_icones" ["display_outils"]=> string(3) "oui"
["cnx"]=> string(5) "perma" }
["id_auteur"]=> int(1)
["nom"]=> string(18) "xxxx"
["bio"]=> string(0) ""
["email"]=> string(28) "xxx@yyy.fr"
["nom_site"]=> string(0) ""
["url_site"]=> string(0) ""
["login"]=> string(18) "xxxxx"
["statut"]=> string(9) "0minirezo"
["webmestre"]=> string(3) "oui"
["maj"]=> string(19) "2020-12-16 17:17:50"
["pgp"]=> string(0) ""
["en_ligne"]=> string(19) "0000-00-00 00:00:00"
["source"]=> string(4) "spip"
["lang"]=> string(0) ""
["civilite"]=> string(1) "1"
["identite_nom"]=> string(5) "xxx"
["identite_prenom"]=> string(12) "yyyy"
["cat_socio"]=> string(2) "21"
["membre_adherent"]=> string(1) "0" <- dans la base, j'ai un 'oui'
["code_postal"]=> string(0) ""
["situation_famille"]=> string(0) ""
["charte"]=> string(0) ""
["reglement"]=> string(0) ""
["membre_participant"]=> string(0) ""
["parcours_scolaire"]=> string(0) ""
["parcours_pro"]=> string(0) ""
["activites_asso"]=> string(0) ""
["interets"]=> string(0) ""
["profession"]=> string(0) ""
["validite_adhesion"]=> string(19) "0000-00-00 00:00:00"
["auth"]=> string(4) "spip"
["cookie"]=> string(3) "oui"
["hash_env"]=> string(32) "5b01fd3bd374a4e12916af51d948468e"
["ip_change"]=> bool(false)
["date_session"]=> int(1608135477)
["restreint"]=> array(0) { } }
Chose étonnante, les champs texte (identite_nom et identite_prenom)
sont bien écrits dans la base et relus pas la fonction de chargement
(l'utilisateur peut changer son prénom et au prochain rechargement du
formulaire, le nouveau prénom est bien là). Mais pas membre_adherent qui
reste dans l'état initial obtenu lors de l'ouverture de la session.
Ma fonction de chargement est pourtant triviale :
function
formulaires_membre_sympathisant_charger_dist()
{
// Lecture des données dans la table auteur pour
// préremplir le formulaire.
// Les valeurs courantes sont contenues dans le tableau
// $GLOBALS['visiteur_session'][champ de la table auteur]
//actualiser_sessions($GLOBALS['visiteur_session']['id_auteur']);
//L'actualisation ne change rien au problème de checkbox.
$valeurs = array(
'prenom' => $GLOBALS['visiteur_session']['identite_prenom'],
'nom' => $GLOBALS['visiteur_session']['identite_nom'],
'civilite' => $GLOBALS['visiteur_session']['civilite'],
'sociopro' => $GLOBALS['visiteur_session']['cat_socio'],
'membre_adherent' =>
$GLOBALS['visiteur_session']['membre_adherent']);
echo $GLOBALS['visiteur_session']['membre_adherent'];
return $valeurs;
}
Je ne sais pas si j'ai fait quelque part une boulette, mais je ne
saisis pas bien ce qu'il se passe. Toute idée sera la bienvenue.
Bien cordialement,
JB