Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1701 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Insertions a la pelle avec refresh !?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Insertions a la pelle avec refresh !?

n°674127
lkolrn
<comment ça marche?>
Posté le 15-03-2004 à 15:12:53  profilanswer
 

bonjour,
 
je crée en ce moment un module de faq dynamique, qui se décompose pour l'instant en 2 fichiers:
- mon 'post.php' contient un formulaire de question / réponse à poster vers 'main.php'
- mon 'main.php' contient des routines pour afficher l'ensemble de mes posts triés, réceptionner un formulaire (question ou réponse) et l'enregistrer s'il est cohérent + 2 liens vers les 2 formulaires de 'post.php'
 
Ca tourne en boucle: lorsque je remplis un formulaire de question (valable aussi pour réponse) et que je l'envoie vers 'main.php', je retombe sur ma page 'main.php' avec mon tableau trié contenant ce nouveau message... Seulement, lorsque je tape sur F5 pour refresh, ca me pond à chaque fois un nouvel enregistrement avec les données réceptionnées du forulaire de 'post.php', donc si je fais N refresh ca me balance N enregistrement identiques (logique puisqu'issus des memes champs postés) dans ma bdd...
 
J'ai essayé plusieurs trucs déja:
- lorsque je vérifie la validité des champs du formulaire, je les conserve dans une variable lambda_N, j 'unset()' la variable postée ($_POST['nom_user'] par exemple), puis apres insertion j 'unset()' également les lambda_N correspondant
=> les insertions suivantes ne devraient pas se faire puisque les variables sont deja vidées...
 
- j'ai flanqué quelques booléens, du style:

Code :
  1. bool_sauv = 0;
  2. SI (champs_formulaire OK) ALORS bool_sauv = 1 FIN SI;
  3. SI (bool_sauv == 1) ALORS
  4. Insertion_enregistrement;
  5. bool_sauv = 0;
  6. FIN SI


=> 1 seule insertion devrait être possible avec ce genre de "controle"
 
note: j'utilise Mozilla (tlm devrait aussi ;)), et il me met une boite de confirmation qui illustre bien mon problème => ca donne en gros: votre page contient des données postées, si vous réenvoyez les données (avec F5 refresh), toutes les actions de la page (ici 'main.php') seront répétées... (on peut ensuite annuler ou valider)
 
MERCI D'AVANCE pour la parade


Message édité par lkolrn le 15-03-2004 à 17:03:20
mood
Publicité
Posté le 15-03-2004 à 15:12:53  profilanswer
 

n°674280
lkolrn
<comment ça marche?>
Posté le 15-03-2004 à 17:01:12  profilanswer
 

Personne n'a jamais rencontré ce probleme... :??: :heink:

n°674369
jagstang
Pa Capona ಠ_ಠ
Posté le 15-03-2004 à 17:57:20  profilanswer
 

si si souvent même.  
 
il faut 3 fichier et non 2. tu pourras alors pas faire F5 pour revalider.  
 
saisie --> ajoutbdd --> affichage
 
à la fin de l'ajout, redirection et voilà

n°674731
lkolrn
<comment ça marche?>
Posté le 16-03-2004 à 00:32:22  profilanswer
 

ca veut dire que c'est po possible de réinitialiser des variables postées depuis mon 'poster.php' ?! (du type <input type="text" name="nom" size="42" maxlength="256"> )
la durée de "vie" de ces variables est-elle configurée dans un/des fichier(s) :??:


Message édité par lkolrn le 16-03-2004 à 11:03:51
n°674734
jagstang
Pa Capona ಠ_ಠ
Posté le 16-03-2004 à 01:06:02  profilanswer
 

c'est pas la durée de vie, mais la visibilité. c'est la même chose mais ça se dit comme ça.  
 
sinon je sais pas ce que fait poster.php ??

n°674855
lkolrn
&lt;comment ça marche?&gt;
Posté le 16-03-2004 à 11:03:33  profilanswer
 

dsl ct po poster.php mais 'post.php' (c précisé dans le 1er message), qui contient juste des champs de formulaire et un submit...
 
P.S.: jme souviens d'avoir deja vu le système classique (unique?) de 3 pages pour insérer facilement des données depuis des formulaires, mais j'aimerais savoir vraiment comment ca marche, même si c 3 fois + chiant de faire avec seulement 2 pages (en fait faudrait rendre inactive la visibilité des variables après la 1ere insertion...)


Message édité par lkolrn le 16-03-2004 à 11:35:56
n°674925
jagstang
Pa Capona ಠ_ಠ
Posté le 16-03-2004 à 12:27:15  profilanswer
 

tu ne peux pas. eu refresh, les variables sont réinitialisées dans le post.

n°675015
lkolrn
&lt;comment ça marche?&gt;
Posté le 16-03-2004 à 13:51:20  profilanswer
 

c donc impossible... :sweat:  
 
oki merci :jap:

n°675126
Sebastien
Posté le 16-03-2004 à 15:23:50  profilanswer
 

tu peux essayer en faisant un locatation qui rappelle ta page avant que l utilisateur ne puisse rafraichir.

n°675151
sub1
Posté le 16-03-2004 à 15:56:14  profilanswer
 

Salut,
 
personnellement, je place un champ hidden sur ma page de formulaire qui contient un timestamp de l'heure actuelle. Au moment du traitement (insertion), je place une variable de session avec la valeur du hidden.  
Je verifie ensuite à chaque traitement que la valeur du hidden soit superieure à celle de ma variable de session.
Ca permet de ne pas reposter un formulaire déja posté via "F5" ou la touche "back" du navigateur.
 
voila.
 
ps : ne pas oublier de prévenir l'utilisateur.....

mood
Publicité
Posté le 16-03-2004 à 15:56:14  profilanswer
 

n°675202
lkolrn
&lt;comment ça marche?&gt;
Posté le 16-03-2004 à 17:01:23  profilanswer
 

en voila des idées qu'elles sont bonnes! :D  
 
o fait, c quoi un "locatation" :??: :pt1cable:


Message édité par lkolrn le 16-03-2004 à 17:01:41
n°675292
jagstang
Pa Capona ಠ_ಠ
Posté le 16-03-2004 à 19:19:50  profilanswer
 

sebastien >> ouais bof. si je fait back puis F5...

n°983743
lkolrn
&lt;comment ça marche?&gt;
Posté le 16-02-2005 à 17:02:02  profilanswer
 

sinon ya plus simple pour faire ça en 1 fois:
 
dans la page d'insertion on vérifie dabord que les données postées n'existent po dja dans la base... le gars aura beau faire des refresh, rien n'ira jusqu'à la base :bounce:

n°983797
naceroth
Posté le 16-02-2005 à 17:35:06  profilanswer
 

LKoLRn a écrit :

sinon ya plus simple pour faire ça en 1 fois:


 
Pas efficace, ça sous entend qu'il ne peut y avoir 2 données identiques dans la base (hors clé unique).
 
A moins de faire le test sur tous les champs (et encore, avec une date d'insertion à comparer à la date actuelle), bref, c'est lourd pour pas grand chose par rapport au classique form > ajout redirection sur le serveur > form par exemple.

n°983895
lkolrn
&lt;comment ça marche?&gt;
Posté le 16-02-2005 à 19:00:46  profilanswer
 

naceroth a écrit :

Pas efficace, ça sous entend qu'il ne peut y avoir 2 données identiques dans la base (hors clé unique).
 
A moins de faire le test sur tous les champs (et encore, avec une date d'insertion à comparer à la date actuelle), bref, c'est lourd pour pas grand chose par rapport au classique form > ajout redirection sur le serveur > form par exemple.


ouais! c vrai que ça dépend des bases... pour la date précise d'insertion dans la base, c vraiment nécessaire? si les données ont dja été insérées 1 fois, ça suffit pour ne plus vouloir les insérer à nouveau, et donc c indépendant d'une date. nan?
 
Sinon le schéma classique c bien:
- page formulaire
- page insertion des données postées
- redirection vers page formulaire
 
???
 
jmi perd avec ces applis internet...  :pt1cable: :whistle:


Message édité par lkolrn le 16-02-2005 à 19:01:21
n°983913
naceroth
Posté le 16-02-2005 à 19:35:16  profilanswer
 

LKoLRn a écrit :

ouais! c vrai que ça dépend des bases... pour la date précise d'insertion dans la base, c vraiment nécessaire? si les données ont dja été insérées 1 fois, ça suffit pour ne plus vouloir les insérer à nouveau, et donc c indépendant d'une date. nan?


 
Tu réponds toi même à la question : ça dépend des bases :)
 
Si (et j'insiste sur le si :)) on se base sur un principe de non doublons pour, par exemple, une liste de contacts (cas où 2 enregistrements identiques peuvent exister sans être des doublons), avoir une date d'insertion est un moyen de s'assurer que les deux n'ont pas été insérer l'un après l'autre.
 

Citation :

Sinon le schéma classique c bien:
- page formulaire
- page insertion des données postées
- redirection vers page formulaire


 
Oui, c'est ça. Attention qu'on parle bien d'une redirection sur le serveur, pas d'un truc javascript chez le client :)

n°984019
lkolrn
&lt;comment ça marche?&gt;
Posté le 16-02-2005 à 21:28:22  profilanswer
 

:jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Insertions a la pelle avec refresh !?

 

Sujets relatifs
[VBA Word] Refresh du sommaire [OK]Probléme de refresh depuis un popup
serveur qui force le refresh d'une page ??pb de refresh et cache après mise à jour
Qu'utiliser...? Refresh ou Reload?[JS?] Retour en arrière et refresh.
[PHP] probleme refresh cause de requeteun genre de refresh
[HTML/JS] Problème de Refresh[HTML/JS] Revenir x page(s) en arrière et faire un refresh
Plus de sujets relatifs à : Insertions a la pelle avec refresh !?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR