Method Post : réinitialiser les parmaètres.

Abdel -  
 Abdel -
Bonjour,
J'utilise Perl et Psql.
Après la validation d'un formulaire avec method POST, j'affiche une page particulière. Ma DB a été mise à jour correctement.
Or, si je raffaichie à la suite de ma validation je rajoute un champs dans ma DB puisque le fichier qui contient les paramètres de mon formulaire sont toujours stokés.
Je cherche donc le moyen de vider ce fichier.
Si quelqu'un peut m'aider merci d'avance.

PS: j'ai pensé à un fomulaire supplémentaire avec que des champs TYPE hidden VALUE ' ' mais je n'arrive pas à faire un submit automatique.
A voir également:

4 réponses

Bobinours Messages postés 2903 Statut Membre 504
 
La méthode la plus propre que j'ai trouvée est une simple redirection après l'enregistrement.

#!/usr/bin/perl -wT

use strict;

if (VALEURS_CORRECTES) {
    # ENREGISTREMENT BDD
    print "Location: page_script.pl";
    exit;
}
else {
    print "Erreur";
}


Ceci implique qu'il n'y ait aucun sortie écran (print ou autre) avant la redirection, c'est-à-dire le : print "Location: ...";

0
Abdel
 
Merci pour ton aide mais cela ne fonctionne pas. En effet, la redirection foctionne parfaitement avec PRINT(Location) mais à la suite de cette redirection toute les valeur pérécement chargés par lors du submit précédent via la method POST sont conservé en mémoire Du coup, si l'utilisateur venait à raffraichir l'écran il réexecutera le script précédent avec les toutes les variables précédentes. Ceci ne pose pas de problème lors d'un UPDATE mais posa problème lors d'un INSERT INTO. En effet, on crée ainsi des doublons.
Hier, j'ai trouvé une solution qui fonctionne bien avec l'utilisation d'un script Javascript qui Submit un formulaire vide via la method POST. Il purge ainsi le contenu du tableau de Hashage qui contenai t toutes les anciennes variables.

PS : J'utilisait presque la même méthode que toi, c'est à dire que je faisait une redirection via un do("script_perl.pl");exit(0);

Merci encore.
0
Bobinours Messages postés 2903 Statut Membre 504
 
Je ne comprends pas le problème que tu décris. Le refresh ne doit pas renvoyer d'information après une redirection.

Sur le serveur :

Il existe 3 pages:

Page 1 : Formulaire de saisie.
Page 2 : Enregistrement et redirection.
Page 3 : Affichage page retour (après enregistrement du formulaire).

Côté client (navigateur) :

Page 1 : Formulaire de saisie.
Page 2 : Affichage page retour (après enregistrement du formulaire).

C'est une redirection serveur. Le client ne voit pas la page intermédiaire et ne peut donc pas la rappeller (à moins d'appuyer sur "Envoyer" de nouveau).
0
Abdel
 
Je me suis peut être mal expliqué, mais ta description de la situation est trés juste.
Néanmoins, il existe un problème lorque j'affiche dans la frame la page de retour. En effet, cliquer sur actualisé (sur IE par exemple) réxecute le code précédent...et m'ajoute un champs de trop à chaque fois dans ma DB.
Merci encore pour ton attention.
0