Actualiser une page faisant un INSERT INTO

Actualiser une page faisant un INSERT INTO - PHP - Programmation

Marsh Posté le 13-10-2002 à 11:18:49    

Je suis en train de faire un script tout bête.
Une formulaire envoie des informations par POST au fichier courant pour qu'il les traite ($PHP_SELF) : un INSERT dans la base. Seulement voilà, à chaque fois que l'utilisateur frappe F5, je me retrouve avec un nouvel enregistrement dans la base, ce qui est idiot. Y a t'il un moyen propre, sans utiliser plusieurs fichiers PHP ?


---------------
Le site de ma maman
Reply

Marsh Posté le 13-10-2002 à 11:18:49   

Reply

Marsh Posté le 13-10-2002 à 13:15:39    

si l'utilisateur fait un "post", il clique certtainement sur un bouton non ?
donc teste si la valeur du bouton existe :

Code :
  1. if (isSet($nom_du_bouton)){
  2. $query='';
  3. }
  4. else{
  5. }


---------------
...oups kernel error...
Reply

Marsh Posté le 13-10-2002 à 13:32:05    

ethernal a écrit a écrit :

si l'utilisateur fait un "post", il clique certtainement sur un bouton non ?
donc teste si la valeur du bouton existe :

Code :
  1. if (isSet($nom_du_bouton)){
  2. $query='';
  3. }
  4. else{
  5. }





Je vais tester ça.


---------------
Le site de ma maman
Reply

Marsh Posté le 13-10-2002 à 14:09:02    

je ne pense que ca fonctionne, les donnees du post sont toujours la.
 
Une solution pratique est une page php qui gere tt les traitements (insert ...) et puis redirige vers les pages d'affichage.
 
 

Reply

Marsh Posté le 13-10-2002 à 14:28:04    

T'as une solution simple qui consiste à faire une condition devt l'Insert
 
if($action=='insérer';)
{
Insert(blabla);
$action='0'; // Comme ça tu réinitialise ta variable
}
 
Après dans ton Form de la page précédente tu mets ton Url de post suivi de ?action=inserer
 
Je pense que ça devrait marcher
 
Edit : En fait non ça marchera pas :D
 
Autre piste :
Pourquoi ne pas générer une variable aléatoire dans ton formulaire. Cette variable tu la postes dans un champs de ta table et dans ta page qui traite l'Insert, tu fais une vérification sur ce champs dans ta table et si il existe tu empèche l'Insert de se faire.


Message édité par format_c le 13-10-2002 à 14:34:41
Reply

Marsh Posté le 13-10-2002 à 14:59:14    

Format_C a écrit a écrit :

T'as une solution simple qui consiste à faire une condition devt l'Insert
 
if($action=='insérer';)
{
Insert(blabla);
$action='0'; // Comme ça tu réinitialise ta variable
}
 
Après dans ton Form de la page précédente tu mets ton Url de post suivi de ?action=inserer
 
Je pense que ça devrait marcher
 
Edit : En fait non ça marchera pas :D
 
Autre piste :
Pourquoi ne pas générer une variable aléatoire dans ton formulaire. Cette variable tu la postes dans un champs de ta table et dans ta page qui traite l'Insert, tu fais une vérification sur ce champs dans ta table et si il existe tu empèche l'Insert de se faire.



Cette solution marchera (je parle de la dernière que tu proposes), mais elle oblige à documenter un champ "bidouille" dans la table. Je pense que je vais me rabattre sur une solution classique en deux fichiers, et appel à la fonction header.


---------------
Le site de ma maman
Reply

Marsh Posté le 13-10-2002 à 15:57:51    

beleg a écrit a écrit :

je ne pense que ca fonctionne, les donnees du post sont toujours la.
 
Une solution pratique est une page php qui gere tt les traitements (insert ...) et puis redirige vers les pages d'affichage.




 
ouai bon j'ai pas été complet...

Code :
  1. if (isSet($nom_du_bouton)){
  2. //traitement sql
  3. $query='';
  4. header('location: '.$nom_de_la_page_sans_argument);
  5. }
  6. else{
  7. // affichage formulaire
  8. }


la soluce avec 2 pages est bien aussi...


Message édité par ethernal le 13-10-2002 à 15:58:23

---------------
...oups kernel error...
Reply

Marsh Posté le 13-10-2002 à 17:33:19    

Ah, effectivement, comme ça, ça doit passer aussi. Merchi bien.


---------------
Le site de ma maman
Reply

Marsh Posté le 13-10-2002 à 17:54:34    

Oui, le problème est résolu, grâce à la directive

Code :
  1. header("location: $PHP_SELF" );


---------------
Le site de ma maman
Reply

Sujets relatifs:

Leave a Replay

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