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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  doublon a chaque INSERT

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

doublon a chaque INSERT

n°1470562
Fazer916
y en a marre
Posté le 04-11-2006 à 15:08:21  profilanswer
 

voici mon code
 

Code :
  1. $sql = "INSERT INTO famille(id,nom) VALUES('','$nom')";
  2. mysql_query($sql) or die('Erreur SQL ! <BR>'.mysql_error());
  3. echo '<script type="text/javascript">alert(\'Nom ajouté ! \');</script>';
  4. include ('index.php');
  5. mysql_close();


 
mais je me retrouve avec un doublon dans ma table a chaque fois, d'ou peut venir le probleme ?


Message édité par Fazer916 le 04-11-2006 à 15:09:11
mood
Publicité
Posté le 04-11-2006 à 15:08:21  profilanswer
 

n°1470595
Fazer916
y en a marre
Posté le 04-11-2006 à 16:48:16  profilanswer
 

quelles peuvent etre les causes en general de la creation de doublon lors de l'execution d'une requette ?

n°1470597
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 04-11-2006 à 16:58:05  profilanswer
 

Dans quel fichier est ton code ?

n°1470604
Fazer916
y en a marre
Posté le 04-11-2006 à 17:10:04  profilanswer
 

un fichier .php appelé en tant qu'action lorsqu'un formulaire est validé

n°1470605
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 04-11-2006 à 17:12:17  profilanswer
 

Je me suis dit que peut être quand tu inclus index.php ca relance la requete ...

n°1470606
Fazer916
y en a marre
Posté le 04-11-2006 à 17:19:47  profilanswer
 

ok je vais tester ça, a la limite si je clos la connexion avant le include la requette devrais etre evité

n°1470612
Fazer916
y en a marre
Posté le 04-11-2006 à 17:43:56  profilanswer
 

même pas
c'est vraiment bisard surtout que c'est pas mon 1er fichier qui fait des insert ds une bdd

n°1470613
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 04-11-2006 à 17:47:38  profilanswer
 

On peut avoir les sources complete stp ?
 
Parce que le bout de code n'est certainement pas en cause ;)

n°1470629
Fazer916
y en a marre
Posté le 04-11-2006 à 18:46:27  profilanswer
 

Formulaire

Code :
  1. <FORM action="enregistrement.php" name="desc" method='post'>
  2. Nom <INPUT type="text" name="nom">
  3. Texte <TEXTAREA name="texte" cols=72 rows=15 wrap="virtual" maxlength=5000></TEXTAREA>
  4. <INPUT type="submit" name="valider" value="Envoyer">


 
J'ai assez simplifié, puisque c'est assez long, il y a un code javascript qui verifie les elements du formulaire, et qui est assez complexe puisqu'il permet l'insertion de BBcode en cliquant sur des boutons pour le textarea
 
 
Puis la page php executé au submit

Code :
  1. session_start();
  2. $db = mysql_connect('localhost','root','') or die ('Erreur de connexion'.mysql_error());
  3. mysql_select_db('personnes',$db) or die('Erreur de selection '.mysql_error());
  4. $nom = $_POST['nom'];
  5. $texte = mysql_real_escape_string ( htmlentities( $_POST["texte"] ) );
  6. $sql = "INSERT INTO famille(id,nom,texte) VALUES('','$nom','$texte')";
  7. mysql_query($sql) or die('Erreur SQL ! <BR>'.mysql_error());
  8. echo '<script type="text/javascript">alert(\'Nom ajouté ! \');</script>';
  9. include ('index.php');
  10. mysql_close();


Message édité par Fazer916 le 04-11-2006 à 18:49:57
n°1470640
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 04-11-2006 à 19:35:49  profilanswer
 

Le formulaire = index.php ?

mood
Publicité
Posté le 04-11-2006 à 19:35:49  profilanswer
 

n°1470642
KangOl
Profil : pointeur
Posté le 04-11-2006 à 19:59:25  profilanswer
 

tu utilises IE je suppose ...
 
et avec firefox ca insert deux fois aussi ?

n°1470655
Fazer916
y en a marre
Posté le 04-11-2006 à 21:42:36  profilanswer
 

le formulaire n'est pas en index, mais dans une autre page
une fois le formulaire envoyé, je demande le retour a la page principale
 
oui j'utilise IE, je vais essayer avec FF
 
mais bisarement c'est le seul formulaire qui me fait ça

n°1470716
Fazer916
y en a marre
Posté le 05-11-2006 à 10:40:05  profilanswer
 

en effet avec FF pas de boublon
 
il peut venir d'ou le probleme ?
puisque c'est pas la 1ere fois que je fais un insert, et les autres fonctionnent impec avec IE

n°1470765
KangOl
Profil : pointeur
Posté le 05-11-2006 à 12:45:17  profilanswer
 

le probleme viens de ton code html qui est foireux...
et ie, lors du parsing, demande deux fois la page ...
 
http://bugs.php.net/bug.php?id=10599

n°1470784
Fazer916
y en a marre
Posté le 05-11-2006 à 14:07:57  profilanswer
 

le lien est HS mais je vais essayer de trouver un truc similaire

n°1470877
Fazer916
y en a marre
Posté le 05-11-2006 à 18:23:09  profilanswer
 

rien a faire, sur ce lien il indique un probleme causé par un BGCOLOR au millieu de la table
j'ai justement un BG color au milieu de ma table, mais même retiré le probleme persiste !
 
c'est vraiment penible !
 
 
je me suis aussi rendu compte qu'en faisant F5 une fois la page principale retournée, ça executait le script, puisqu'il reste en barre d'adresse
Vous avez une idée pour eviter ce genre de probleme ? initialiser une variable en session depuis la page du formulaire par exemple


Message édité par Fazer916 le 05-11-2006 à 18:25:53
n°1470881
Fazer916
y en a marre
Posté le 05-11-2006 à 18:29:32  profilanswer
 

En fait je viens de me rendre compte que ça fait ça pour tous mes formulaires, IE les envois 2 fois
 
je vais faire champ caché qui se vide une fois la requette effectuée
 
Ai je le droit de faire ça -> $_POST['truc'] = 0;          ??????
 
y a pas d'autres solution que de passer par les sessions ?
je ne sais même pas ce qui est executé 2 fois, si c'est le formulaire, le fichier de reception, ou les 2 !
 
c'est le basard ce truc


Message édité par Fazer916 le 05-11-2006 à 18:43:46
n°1470888
KangOl
Profil : pointeur
Posté le 05-11-2006 à 18:53:29  profilanswer
 

ca viens de ton <body> non ?
et pour éviter ca, faut faire une page de transition (comme sur le forum)

n°1470892
Fazer916
y en a marre
Posté le 05-11-2006 à 19:05:56  profilanswer
 

ouai c'est ce que je suis en train de me dire ! puisque quand je fais un include pour aller sur la page d'accueil, la page des requettes sql reste en barre d'adresse, donc doit surement se reexecuter !

n°1470898
Fazer916
y en a marre
Posté le 05-11-2006 à 19:26:11  profilanswer
 

bon bah même la redirection n'empeche pas le doublon
ça commence a me gonfler
 
et sur un autre formulaire j'ai un doublon une fois sur 3


Message édité par Fazer916 le 05-11-2006 à 20:10:55
n°1470978
leflos5
On est ou on est pas :)
Posté le 06-11-2006 à 02:38:19  profilanswer
 

KangOl a écrit :

ca viens de ton <body> non ?
et pour éviter ca, faut faire une page de transition (comme sur le forum)


Si tu fais 2 retours en arrière c'est le même pb ;)
 
Y'a qu'une solution à ça, le traiter toi même et vérifier que tu veux pas envoyer 2 fois de suite la même chose :)
 
Mais apparement Fazer a quand même plein de soucis purement conceptuels, et j'ai l'impression qu'il est dans une grosse mouise d'usine à gaz ingérable :whistle:

n°1471284
Fazer916
y en a marre
Posté le 06-11-2006 à 17:23:41  profilanswer
 

pkoi conceptuels ?
j'ai fais les choses dans l'ordre, et tres proprement, j'ai un code assez complexe
un formulaire, du js qui analyse sur place, puis du php une fois submité pour analyser le formulaire
c'est sufisament bien construit non ?

n°1471418
leflos5
On est ou on est pas :)
Posté le 07-11-2006 à 03:19:15  profilanswer
 

Sauf que tu pars déjà dans des histoires de redirection (à moins que ça soit juste un problème de compréhension de ma part :??: ), tout est mélangé visiblement et la preuve t'arrives même pas à savoir ce qu'il faudrait faire pour ton histoire de formulaire :)
 
Le js on s'en cogne royal, c'est gadget ni plus ni moins ;) Après que tu vérifies les données c'est une bonne chose mais c'est surtout normal.
 
Prends une feuille de papier, réfléchie à ce que tu veux au final et regarde ce qui est commun, comment t'y parviens dans un cheminement logique et vois comment décomposer la chose de manière élémentaire :)
 
PS: ce que tu considères dans l'ordre ne l'est pas forcément, et justement parfois faut pas uniquement voir l'ordre (1,2,3,4,5...) mais le modèle.
 

n°1471444
Fazer916
y en a marre
Posté le 07-11-2006 à 09:06:26  profilanswer
 

Pour la redirection, c'est parce que j'utilise des pseudo frame sur tout le site, sauf pour le fichier d'enregistrement du formulaire, car j'avais qqes problemes. Donc quand je quittais la page d'enregistrement pour retourner a l'accueil, sans faire de redirection j'avais l'adresse de la page qui persistait dans la barre d'adresse. Mais je commence a comprendre pourquoi tu te poses des questions ça se sujet, je vais reessayer avec la pseudo frame
 
et justement, je me posais une question pour la page de transition, comment cela doit se passer ?
- formulaire submité qui envoie les info à une page php qui elle fait les requette sql, une fois les requettes effectuées elle lance la page de transition qui dure 5 secondes, puis retourne a l'accueil,
- ou bien formulaire qui envoie les infos a la page de transition qui dure 5 secondes, qui elle même analyse le formulaire, puis retourne en page d'accuel ?
 
en gros la page de transition c'est elle qui doit analyser les données ou non ?

n°1471459
chani_t
From Dune
Posté le 07-11-2006 à 09:28:05  profilanswer
 

tu as plusieurs façon de faire. La plus simple étant de faire une page de traitement, que ton formulaire va appeler, et de cette page de traitement repartir sur , soit ta page d'accueil si ton formulaire était bien remplis, soit sur ton formulaire sinon.
 
dans cette page de traitement, tu retrouve les appels aux fonctions de vérifications de ton formulaire, les appels à la base de données si besoin, et la redirection ( header(accueil.php)) vers la bonne page.
 
Aprés tu peux aussi faire une page de traitement générique, mais ça implique que tu ais prévus ça dans le codage de tes formulaires.

n°1471465
Fazer916
y en a marre
Posté le 07-11-2006 à 09:40:12  profilanswer
 

jusqu'a present, j'avais fait le formulaire qui envoie a une page de traitement, qui envoie vers une page de transition ( header( ) ), qui celle ci affiche un message, puis qui redirige 5s plus tard vers l'accueil
donc j'ai le droit
 
pour la page de traitement generique je prefere eviter, ça risque de compliquer encore plus
 
en cas d'erreur dans la page de traitement, quelle commande utiliser pour retourner sur la formulaire ? du document.location.href de js ?

n°1471473
chani_t
From Dune
Posté le 07-11-2006 à 09:48:26  profilanswer
 

nan tu redirige avec un header, mais avant tu set une variable de session avec ton post...

n°1471697
leflos5
On est ou on est pas :)
Posté le 07-11-2006 à 16:06:50  profilanswer
 

Fazer916 a écrit :

Pour la redirection, c'est parce que j'utilise des pseudo frame sur tout le site, sauf pour le fichier d'enregistrement du formulaire, car j'avais qqes problemes. Donc quand je quittais la page d'enregistrement pour retourner a l'accueil, sans faire de redirection j'avais l'adresse de la page qui persistait dans la barre d'adresse. Mais je commence a comprendre pourquoi tu te poses des questions ça se sujet, je vais reessayer avec la pseudo frame
 
et justement, je me posais une question pour la page de transition, comment cela doit se passer ?
- formulaire submité qui envoie les info à une page php qui elle fait les requette sql, une fois les requettes effectuées elle lance la page de transition qui dure 5 secondes, puis retourne a l'accueil,
- ou bien formulaire qui envoie les infos a la page de transition qui dure 5 secondes, qui elle même analyse le formulaire, puis retourne en page d'accuel ?
 
en gros la page de transition c'est elle qui doit analyser les données ou non ?


Justement si tu utilises un controleur centralisé pourquoi faire une page d'enregistrement à part :??:

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  doublon a chaque INSERT

 

Sujets relatifs
[SQL] insert avec conditions [PHP]Probleme requete insert
insert into depuis un formulaire[ACCESS] Gestion erreur doublon VBA
[Delphi] Question sur ADOQuery et INSERT INTO [Résolu][SQL SERVER 05][SSIS] Pb insert champ date
Fonction INSERT avec un formulaireprobleme avec insert into et update utilisés ensemble
If (SELECT) then UPDATE ELSE INSERT ...INSERT doublon sur clé unique => bloque ou bloque pas
Plus de sujets relatifs à : doublon a chaque INSERT


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