[solution] Re: Problème de cache was Formulaire CVT : bug ou idiotie de ma part ?
BERTRAND Joël <[email protected]>
| Newsgroups | gmane.comp.web.spip.devel |
|---|---|
| Message-ID | <[email protected]> |
Pas simple, mais j'ai trouvé en tâtonnant. Il faut invalider le cache
associé à l'auteur courant. La fonction traiter() devient :
function
formulaires_membre_sympathisant_traiter_dist()
{
$message = array();
$donnees = array();
$donnees['identite_nom'] = _request('nom');
$donnees['identite_prenom'] = _request('prenom');
$donnees['civilite'] = _request('civilite');
$donnees['cat_socio'] = _request('sociopro');
if (_request('membre_adherent'))
{
$donnees['membre_adherent'] = _request('membre_adherent');
}
else
{
$donnees['membre_adherent'] = 'non';
}
$donnees['maj'] = date("Y-m-d H:i:s");
// Cette requête ne peut échouer (sauf si le disque est plein
// auquel cas je ne peux rien faire).
if (sql_updateq('spip_auteurs', $donnees,
'id_auteur = '.$GLOBALS['visiteur_session']['id_auteur']))
{
$message['message_ok'] =
'La modification des données a été prise en compte.';
}
else
{
$message['message_ok'] =
'Erreur d\'enregistrement dans la base de données.';
}
include_spip('inc/invalideur');
suivre_invalideur("id='auteur/".$GLOBALS['visiteur_session']['id_auteur']
."'");
return $message;
}
À cette condition, spip effectue une requête sur la table 'auteur' et
recharge les bonnes données. Sinon, il les prend dans le cache (mais
seulement lorsque l'utilisateur a quitté la page et y revient).
Ça vaudrait peut-être le coup d'avoir une fonction sql qui passe outre
le cache pour éviter ce genre de comportement.
Bien cordialement,
JB