Garder les champs saisis lors d'un rafraichissement

Garder les champs saisis lors d'un rafraichissement - HTML/CSS - Programmation

Marsh Posté le 25-05-2005 à 11:32:44    

Bonjour,
 
Voilà je travaille actuellement sur un formulaire comportant beaucoup de champs. Certaines listes mettent à jour dynamiquement d'autres listes de ce formulaire, et ce faisant elles rafraichissent la page. Je perds donc les valeurs des autres champs saisis (texte, cases à cocher, etc.).
Je pense que la solution se trouve du coté du javascript, mais je n'ai encore rien trouvé à ce sujet (uniquement trouvé pour garder les valeurs apres un submit).
Sauriez-vous donc comment résoudre ce probleme ?
 
Merci de votre aide.

Reply

Marsh Posté le 25-05-2005 à 11:32:44   

Reply

Marsh Posté le 25-05-2005 à 11:33:38    

tu perds les valeurs ? fais un submit de tes variables en actualisant, puisque tu les remet dans des champs cachés du meme nom ...


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le 25-05-2005 à 11:38:31    

Ryujin a écrit :


Certaines listes mettent à jour dynamiquement d'autres listes de ce formulaire, et ce faisant elles rafraichissent la page.


 
une autre solution serait de ne pas rafraichir ta page justement
voilà la petite astuce :  
tu effectues le traitement de mise à jour de tes listes dans une page php  
cette page php est appelée dans une frame cachée pour que ce soie transparent pour l'utilisateur...
et le contenu de cette page est une fonction js construite par ton php qui écrit le code javascript qui va bien (tu peux mettre à jour une liste via javascript, je te laisse chercher) et enfin ferme la fenêtre
ensuite, sur le body "html" de ta page php qui met à jour les listes fait tout simplement un onLoad=maFonctionQuiMetAJourLesListes();
et le tour est joué
j'espère avoir été à peu près clair... le reste c du jscript

Reply

Marsh Posté le 25-05-2005 à 11:43:00    

denzz a écrit :

une autre solution serait de ne pas rafraichir ta page justement
voilà la petite astuce :  
tu effectues le traitement de mise à jour de tes listes dans une page php  
cette page php est appelée dans une frame cachée pour que ce soie transparent pour l'utilisateur...
et le contenu de cette page est une fonction js construite par ton php qui écrit le code javascript qui va bien (tu peux mettre à jour une liste via javascript, je te laisse chercher) et enfin ferme la fenêtre
ensuite, sur le body "html" de ta page php qui met à jour les listes fait tout simplement un onLoad=maFonctionQuiMetAJourLesListes();
et le tour est joué
j'espère avoir été à peu près clair... le reste c du jscript


 
 :o  :fou:  :fou:  
 
http://openweb.eu.org/articles/objet_xmlhttprequest/

Reply

Marsh Posté le 25-05-2005 à 12:01:08    

plainsofpain a écrit :

tu perds les valeurs ? fais un submit de tes variables en actualisant, puisque tu les remet dans des champs cachés du meme nom ...


+1


---------------
La curiosité est un vilain défaut car l'erreur et la frustration sont de croire qu'elle pourra être satisfaite !
Reply

Marsh Posté le 25-05-2005 à 12:01:51    


 
 :jap:  :jap:  
 :sweat: pkoi tant de haine ?  

Reply

Marsh Posté le 25-05-2005 à 12:02:31    

ben on va dire que tu étais parti pour du boulot crade.
 
On est en 2005 mon ami

Reply

Marsh Posté le 25-05-2005 à 12:12:37    

Merci pour vos réponses  :wahoo:  
 

plainsofpain a écrit :

tu perds les valeurs ? fais un submit de tes variables en actualisant, puisque tu les remet dans des champs cachés du meme nom ...


 
Je ne comprend qu'à moitié cette solution, serait-il possible de l'expliciter ?  :??:  
Si je comprend bien (ce qui n'a pas l'air d'etre le cas) pour chaque champ j'ai un champ hidden associé qui porte le meme nom. Donc je me retrouve avec 2 champs qui ont la meme valeur, mais ca me donne quoi concretement ?  :??:

Reply

Marsh Posté le 25-05-2005 à 12:24:24    

genre t'as ce champ la
 

Code :
  1. <input type="text" nom="toto" />


 
la il n'y a pas de valeur par defaut, mais genre tu peux faire
 

Code :
  1. <input type="text" name="toto" valeur="<?echo $_POST["toto"];?>" />


 
Bien sur, cela est en php, et nécessite comme j'ai dit de soumettre les valeurs déja remplies au moment ou ca actualise ...
 
Edit : bien sur j'ai mis post en supposant que tu envoie le formulaire avec method="post". Il faiut aussi ne pas oublier le test d'existence de la variable $_POST["toto"].


Message édité par plainsofpain le 25-05-2005 à 12:26:02

---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le 25-05-2005 à 12:30:07    

Oui je connaissais cela, et utilisé le PHP ne me gêne pas c'est déjà le cas pour beaucoup de choses dans mon formulaire. En fait mon "probleme" est le submit dont tu parles, où doit il se faire vu que ce n'est pas à la validation du formulaire que je souhaite garder ces valeurs mais lors du rafraichissement.
Et où interviennent les champs cachés dont tu parles également ?
 
Merci pour tes eclaircissements :)

Reply

Marsh Posté le 25-05-2005 à 12:30:07   

Reply

Marsh Posté le 25-05-2005 à 12:33:08    

la fonction qui rafraichit est en javascript ?


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le 25-05-2005 à 13:09:51    

Je crois comprendre :
1_ il te faut donc un formulaire qui va pointer sur la même page php (formulaire de rafraichissement) et tu posera des onchange="submit()" sur les select qui nécessitent un refresh
2_ il te faut un second formulaire qui va pointer vers ta page de traitement et qui sera composé du bouton de soumission et des champs cachés doublons des champs du premier formulaire dont les valeurs seront les valeurs passées en paramètre lors du refresh.
 
Jouable ... y-a sûrement mieux mais c'est jouable.


---------------
La curiosité est un vilain défaut car l'erreur et la frustration sont de croire qu'elle pourra être satisfaite !
Reply

Marsh Posté le 25-05-2005 à 13:55:55    

Je ne vous ai ptet pas donné tous les éléments pour mon probleme, le rafraichissement se fait dans une fonction javascript comme cela :

Code :
  1. function cible(fichier,recherche,ecran,imprimante){
  2. nP=recherche.marque.selectedIndex;
  3. var url="";
  4. url +=fichier;
  5. url +="?marque=";
  6. url += nP;
  7. url +="&ecran=";
  8. url +=ecran;
  9. url +="&imprimante=";
  10. url +=imprimante;
  11. location.href=url;
  12. }


cette fonction me sert pour que quand je selectionne une "marque" d'ordinateur, par exemple, dans une liste déroulante, elle me met à jour la liste déroulante correspondant aux "modèles" de cette marque. Et envoie par conséquent dans l'url l'option choisie dans la liste, que je récuppère aussitot dans la requete listant ses modèles. C'est donc ici que la page se rafraichie.
 

Citation :

Je crois comprendre :
1_ il te faut donc un formulaire qui va pointer sur la même page php (formulaire de rafraichissement) et tu posera des onchange="submit()" sur les select qui nécessitent un refresh
2_ il te faut un second formulaire qui va pointer vers ta page de traitement et qui sera composé du bouton de soumission et des champs cachés doublons des champs du premier formulaire dont les valeurs seront les valeurs passées en paramètre lors du refresh.
 
Jouable ... y-a sûrement mieux mais c'est jouable.


Je pense avoir compris, mais le "hic" est que j'aurais le nombre de mes requetes qui doubleraient, du moins je dois réexecuter mes requetes pour chacun de mes champs caché (autres listes déroulantes et case à cocher notamment).  :sweat: Le formulaire étant déjà conséquent, je prefere envisager qu'il y ai une autre solution  :(  
 
Merci pour l'aide apportée.

Reply

Marsh Posté le 25-05-2005 à 14:10:41    

Que neni, les champs cachés ne sont mis à jour que par le biais du rechargement de la page.
 
Le premier formulaire sert à faire des choix, à chacun de ces choix la valeur du champ est copiée dans le champ caché correspondant. Si cela entraine un refresh, les valeurs cachées sont passées en paramètre, ce qui te permet de réinitialiser tes champs.
Lors du rechargement, tu fais tes requête (tu peux stoquer dans des tables temporaires le résultat : d'ailleurs la fonction php pg_fetch_array le fait toute seule) et tu remplis tes champs ainsi au fur et à mesure.


---------------
La curiosité est un vilain défaut car l'erreur et la frustration sont de croire qu'elle pourra être satisfaite !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed