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

  FORUM HardWare.fr
  Programmation
  PHP

  Formulaire, problème insertion de données

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Formulaire, problème insertion de données

n°1042763
airsupply
Posté le 11-04-2005 à 12:07:37  profilanswer
 

salut,  
 
J'ai deux pages php, "page1" et "page2".  
Sous "page1", il existe un formulaire html. A la validation du formulaire, les données s'insèrent dans une BD MySQL et je passe automatique sur la page 2.  
La méthode utilisée pour récupérer les variables du formulaire est POST.
 
J'ai remarqué que dès lors je rafraîchis la page2 , ces mêmes données sont insérées une seconde foi et ainsi de suite.  
 
J'ai fait exprès de ne pas mettre une clé unique dans la base pour éviter les doublons.
 
Alors, y a-t-il un moyen simple pour ne pas insérer plusieurs fois les mêmes données si l'utilisateur est amené à rafraîchir la page.
 
 
merci
 

mood
Publicité
Posté le 11-04-2005 à 12:07:37  profilanswer
 

n°1042874
pmusa
▓▓▓▓▓▓▓
Posté le 11-04-2005 à 13:12:07  profilanswer
 

up.
 
ça m'interesse dans le cadre de developpement de mon formulaire d'inscription aussi. surtout savoir comment je peux éviter les doublons.  :heink:  
ça peut se faire avec un mysql_num_rows() ?  :??:

n°1042893
GaSPaRD77
Posté le 11-04-2005 à 13:23:32  profilanswer
 

pmusa a écrit :

up.
 
ça m'interesse dans le cadre de developpement de mon formulaire d'inscription aussi. surtout savoir comment je peux éviter les doublons.  :heink:  
ça peut se faire avec un mysql_num_rows() ?  :??:


 
euh je vois pas le rapport avec un mysql_num_rows ...
ton INSERT est tout simplement dans page2, donc à chaque rafraichissement il se refait .. Logique..
Pour eviter ça tu as cas faire une page entre les 2 qui fait l'insert, et renvoi sur ta page2 ...
Mais doit y avoir beaucoup plus propre ...

n°1042901
pmusa
▓▓▓▓▓▓▓
Posté le 11-04-2005 à 13:31:18  profilanswer
 

Code :
  1. $requete=mysql_db_query($sql_bdd,"select * from membres where pseudo='".$_POST['pseudo']."' || email='".$_POST['email']."',$db_link);
  2. $num=mysql_num_rows($requete);
  3. if($num==0)
  4.  {
  5.  $requete=mysql_db_query($sql_bdd,"insert into membres values('', '".$_POST['pseudo']."','".$_POST['email']."')",$db_link);
  6.  }
  7. else{
  8.  echo "vous êtes déjà inscrit";
  9.  }


 
après à lui de l'adapter.  [:airforceone]  
chai pas, moi je fais comme ça, si qqn à plus elegant après... je prends.


Message édité par pmusa le 11-04-2005 à 13:32:39
n°1042915
airsupply
Posté le 11-04-2005 à 13:44:51  profilanswer
 

GaSPaRD77 a écrit :

euh je vois pas le rapport avec un mysql_num_rows ...
ton INSERT est tout simplement dans page2, donc à chaque rafraichissement il se refait .. Logique..
Pour eviter ça tu as cas faire une page entre les 2 qui fait l'insert, et renvoi sur ta page2 ...
Mais doit y avoir beaucoup plus propre ...


 
 
effectivement, très bonne astuce,mais lorsque tu as plusieurs page de formulaire, c'est pas gérable.
ceci-dit, je suis sûr qu'il est possible de vider la variable HTTP_POST_VARS une fois que l'on se trouve dans la page2, car c'est bien cette variable qui contient toutes les valeurs du formulaire , non ??
 
sinon, j'ai essayé un autre moyen, c'est d'initialiser une variable de session, et de faire un contrôle dessus. Ainsi, s'il est déjà initialisée, on ne répéte pas la requête. Mais ceci n'est pas correct non plus .

n°1042968
GaSPaRD77
Posté le 11-04-2005 à 14:25:13  profilanswer
 

J'ai aussi pensé à la variable de session, en quoi ce n'est pas correct ?

n°1043008
airsupply
Posté le 11-04-2005 à 14:51:08  profilanswer
 

GaSPaRD77 a écrit :

J'ai aussi pensé à la variable de session, en quoi ce n'est pas correct ?


 
dans le cadre de mon formulaire, ce n'est pas une méthode propre, car je peux être amené à faire appel à la page1 tout en étant sous la même session. Et là, j'aurais besoin d'insérer de nouvelle données avec la même session. Evidemment, il y a un autre id qui me permet de distinguer les données à insérer pour l'une ou l'autre session.
 
bon si c flou désolé pour l'explication...
 

n°1043012
GaSPaRD77
Posté le 11-04-2005 à 14:55:13  profilanswer
 

ouais j'ai pas compris là :)

n°1043780
CMk
Posté le 12-04-2005 à 10:07:01  profilanswer
 

Et alors ? Avec les variables de session tu peux naviguer partout dans ton site avec...

n°1068365
Ryujin
Posté le 02-05-2005 à 09:13:57  profilanswer
 

Je n'ai pas testé, mais sinon vous pouvez surement ruser, en testant dans la seconde page que les champs ne sont pas vide, si ils ne le sont pas vous faites l'insertion puis vous réinitialisez les variables.
un truc de ce genre là :

Code :
  1. $monChamp=$_POST['monChamp'];
  2. if(!$monChamp==''){
  3.  $insert="insert into maTable values('$monChamp')";
  4.  $result_insert=mysql_query($insert);
  5.          $monChamp='';
  6. }


Mais bon, c'est assez bizzare quand meme je ne fais pas ca dans mes scripts (je ne réinitialise pas mes variables) et il me me les insere pas en double pour autant à chaque refresh  :??: ou alors j'ai pas compris votre probleme...
Sinon effectivement, le mieux reste surement de passer par un script qui gère l'insertion et renvoie sur la seconde page.

mood
Publicité
Posté le 02-05-2005 à 09:13:57  profilanswer
 

n°1068372
cesarr89
Posté le 02-05-2005 à 09:18:46  profilanswer
 

un header ? puis tu reviens sur t

n°1068373
cesarr89
Posté le 02-05-2005 à 09:18:53  profilanswer
 

a page

n°1068374
cesarr89
Posté le 02-05-2005 à 09:19:16  profilanswer
 

oola qu'est ce qui c'est donc passé avec mon message...

n°1068679
cerel
Posté le 02-05-2005 à 13:34:52  profilanswer
 

Le plus simple et d'utiliser une page intermediaire.
 
En gros :
page1 -> page1b -> page2
Dans la page1 il y a le formulaire. Une fois le formulaire envoye, on arrive dans la page1b qui est chargee de faire le traitement des donnes envoyees par le formulaire, ainsi que l'insertion.
Ensuite cette page renvoie sur la page2.
Comme ca, si l'utilisateur fait un refresh sur la page2, il n'y auras pas de nouvelle insertion dans la base.

n°1068687
cesarr89
Posté le 02-05-2005 à 13:37:08  profilanswer
 

C'est bien ce que je dis, avec un header au pire qui renvoie sur page1


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

  Formulaire, problème insertion de données

 

Sujets relatifs
[HTML] probleme de lien image[resolu]Problème de compilation sur visaul C++
Problème PHP -> affichage de certaines choses d'une table MySQLprobleme de saut de ligne
probleme templateProblème de mise en page avec CSS
Problème de syntaxeModifier une étiquette de formulaire avec VB
probleme d'affichage dans une listboxProblème de conception
Plus de sujets relatifs à : Formulaire, problème insertion de données


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