formulaire CVT

hello
j’ai créé un formulaire CVT qui sert à ajouter des mots clef aux auteurs (en attendant que mots-partout fonctionne). il boucle sur lui même (il revient à la même page) pour pouvoir ajouter un 2e, un 3e mot-clef. problème : le 1er mot reste en cache.
j’ai (je crois) tout essayé :

  • les caches de la page qui appelle de formulaire et le formulaire sont à {0},
  • dans le ‹ traiter › j’ai mis $valeurs = ‹  ›; pour vider la variable… ,
  • j’ai remplacé dans le formulaire #ENV{action} par #SELF&var_mode=recalcul…
    rien n’y fait

une idée ?

bien à toutes et tous
Eric

========================================================
Eric Luyckx
METADESIGN
http://www.metadesign.be
201 rue de Hamme-Mille, 1390 Nethen, Belgique
0032 (0)10 861020, 0032 (0)475702942
skype : eric.luyckx

Le 29/07/2009 12:18, Eric Luyckx a écrit :

hello
- dans le 'traiter' j'ai mis $valeurs = ''; pour vider la variable… ,

set_request('nom_variable', null);
plutôt.

--
MM.

cool ça marche merci matthieu

@ triton, si ça peut aider (en tout cas ça fonctionne)
voici le mini formulaire que j’utilise (c’est un début un peu minimal hein)

html : NB la variable #ID_AUTEUR est passée par l’url

#ACTION_FORMULAIRE{#ENV{action}}
Ajouter le mot

php :

<?php // charger les variables function formulaires_mots_auteur_charger_dist(){ $valeurs = array('id_mot'=>'','id_auteur'=>''); return $valeurs; } // verification : pas de vérification // traiter function formulaires_mots_auteur_traiter_dist(){ $mot = _request('id_mot'); $auteur = _request('id_auteur'); sql_insertq('spip_mots_auteurs', array('id_mot' => $mot,'id_auteur' => $auteur)); set_request('id_mot',null); set_request('id_auteu',null); $valeurs = null; } ?>

si ça peut aider (en tout cas ça fonctionne)

Le 29 juil. 09 à 14:59, Matthieu Marcillaud a écrit :

Le 29/07/2009 12:18, Eric Luyckx a écrit :

hello

  • dans le ‹ traiter › j’ai mis $valeurs = ‹  ›; pour vider la variable… ,

set_request(‹ nom_variable ›, null);
plutôt.


MM.


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
http://archives.rezo.net/spip.mbox/

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc

========================================================
Eric Luyckx
METADESIGN
http://www.metadesign.be
201 rue de Hamme-Mille, 1390 Nethen, Belgique
0032 (0)10 861020, 0032 (0)475702942
skype : eric.luyckx

Le 29/07/2009 15:16, Eric Luyckx a écrit :

cool ça marche merci matthieu

de rien mais tu as plein d'erreurs !!!

<form action='#SELF&var_mode=recalcul' method='post' >

NON : <form action='#ENV{action}' method='post' >
un recalcul est hyper gourmand et n'a rien à faire ici. Si tu veux rafraichir ton formulaire, au pire, tu mets #CACHE{0}, mais tu ne devrait pas en avoir besoin je crois.

Si tu veux rafraichir toute ta page et pas uniquement le formulaire, il ne faut pas l'encadrer d'une classe ajax…

#ACTION_FORMULAIRE{#ENV{action}}
<label>Ajouter le mot</label>
<input name="id_mot" type="text" value="" size="5" />
<input type="hidden" name="id_auteur" value="<?php echo
$_GET['id_auteur'] ?>" />

NON : on ne récupère pas des valeurs comme ceci : il faut les envoyer par la fonction charger et récupérer #ENV{id_auteur}. Cependant, tu vas voir que ce hidden est inutile plus loin.

<input type='submit' name='ok' value='ok' />
</form>

php :
<?php

// charger les variables
function formulaires_mots_auteur_charger_dist(){
$valeurs = array('id_mot'=>'','id_auteur'=>'');
return $valeurs;
}

PEUT mieux faire : appeler ton formulaire avec #FORMULAIRE_MOTS_AUTEUR{#ID_AUTEUR}
et récupérer function formulaires_mots_auteur_charger_dist($id_auteur='')
puis transmettre :
$valeurs = array('id_mot'=>'','id_auteur'=>$id_auteur);
plus besoin du hidden dans ce cas.

// verification : pas de vérification

verifier que id_mot est bien un nombre et un id valide

// traiter
function formulaires_mots_auteur_traiter_dist(){
$mot = _request('id_mot');
$auteur = _request('id_auteur');

oui, mais mieux :
function formulaires_mots_auteur_traiter_dist($id_auteur=''){
$mot = _request('id_mot');
sql_insertq('spip_mots_auteurs', array('id_mot' => $mot,'id_auteur' => $id_auteur));

sql_insertq('spip_mots_auteurs', array('id_mot' => $mot,'id_auteur' =>
$auteur));
set_request('id_mot',null);
set_request('id_auteu',null);

FAUTE : 'id_auteu'. et celui-ci est inutile

$valeurs = null;

inutile, puis :
NON : un traitement doit retourner un tableau avec un message de réussite (ou echec) et si on peut l'éditer de nouveau…

}

?>

oufti

tu auras compris que je fais dans la débrouille.
je devrais sans doute suivre un cours SPIP approfondis… mais où ?

concernant la récup de id_auteur, #ENV ne fonctionnait pas (j’ai cru que c’était lié à la balise #FORMULAIRE). mais vu qu’on peut passer la variable comme un inclure…

merci de ta réponse en tous cas

Le 29 juil. 09 à 15:46, Matthieu Marcillaud a écrit :

Le 29/07/2009 15:16, Eric Luyckx a écrit :

cool ça marche merci matthieu

de rien mais tu as plein d’erreurs !!!

NON :
un recalcul est hyper gourmand et n’a rien à faire ici. Si tu veux rafraichir ton formulaire, au pire, tu mets #CACHE{0}, mais tu ne devrait pas en avoir besoin je crois.

Si tu veux rafraichir toute ta page et pas uniquement le formulaire, il ne faut pas l’encadrer d’une classe ajax…

#ACTION_FORMULAIRE{#ENV{action}}

Ajouter le mot

<input type=« hidden » name=« id_auteur » value="<?php echo

$_GET[‹ id_auteur ›] ?>" />

NON : on ne récupère pas des valeurs comme ceci : il faut les envoyer par la fonction charger et récupérer #ENV{id_auteur}. Cependant, tu vas voir que ce hidden est inutile plus loin.

php :

<?php

// charger les variables

function formulaires_mots_auteur_charger_dist(){

$valeurs = array(‹ id_mot ›=>‹  ›,‹ id_auteur ›=>‹  ›);

return $valeurs;

}

PEUT mieux faire : appeler ton formulaire avec #FORMULAIRE_MOTS_AUTEUR{#ID_AUTEUR}
et récupérer function formulaires_mots_auteur_charger_dist($id_auteur=‹  ›)
puis transmettre :
$valeurs = array(‹ id_mot ›=>‹  ›,‹ id_auteur ›=>$id_auteur);
plus besoin du hidden dans ce cas.

// verification : pas de vérification

verifier que id_mot est bien un nombre et un id valide

// traiter

function formulaires_mots_auteur_traiter_dist(){

$mot = _request(‹ id_mot ›);

$auteur = _request(‹ id_auteur ›);

oui, mais mieux :
function formulaires_mots_auteur_traiter_dist($id_auteur=‹  ›){
$mot = _request(‹ id_mot ›);
sql_insertq(‹ spip_mots_auteurs ›, array(‹ id_mot › => $mot,‹ id_auteur › => $id_auteur));

sql_insertq(‹ spip_mots_auteurs ›, array(‹ id_mot › => $mot,‹ id_auteur › =>

$auteur));

set_request(‹ id_mot ›,null);

set_request(‹ id_auteu ›,null);

FAUTE : ‹ id_auteu ›. et celui-ci est inutile

$valeurs = null;

inutile, puis :
NON : un traitement doit retourner un tableau avec un message de réussite (ou echec) et si on peut l’éditer de nouveau…

}

?>

========================================================
Eric Luyckx
METADESIGN
http://www.metadesign.be
201 rue de Hamme-Mille, 1390 Nethen, Belgique
0032 (0)10 861020, 0032 (0)475702942
skype : eric.luyckx