Double insertion dans la base MySql sous IE
Résolu
Tantor8
-
bigD1485 -
bigD1485 -
Bonjour,
Après avoir visité plusieurs forums, dont celui-ci, avec des sujets similaires au mien je n'ai toujours pas trouver de réponse.
Donc la situation est la suivante:
j'ai un formulaire qui doit enregistrer un déstockage dans une base MySql, si le stock possède un sous stock la modification s'éffectue après demande du sous stock. Soit un select qui apparait dans ce même formulaire. La page se recharge après séléction et enregistre le déstockage.
Le problème étant que sous FireFox tout fonctionne bien mais sous IE l'enregistrement est fait deux fois. J'ai pus lire qu'il pourais s'agir de mon code HTML, j'ais alors tous enlever pour avoir uniquement l'HTML et la seule erreur que me donne W3C est l'absence de "action" dans mon formulaire.
En effet comme le formulaire se charge plusieur fois avec des forme différente (select si sous-stock ou non) j'ai alors intégrer du javascript dans mon code php selon le cas pour passer au formulaire suivant:
Jusqu'a maintenant dans mes autres formulaires cette façon fonctionnait bien, je l'utilise pour forcer automatiquement le changement de formulaire sans que l'utilisateur intervienne.
Enfin je pense que cela peut venir de là mais si besoin je peut poster tout mon code (+200 ligne), et si quelqu'un à le même problème ou sais comment le résoudre veuillez m'aider.
Je vous remerci de votre aide.
PS: je programme en local avec EasyPhp.
Après avoir visité plusieurs forums, dont celui-ci, avec des sujets similaires au mien je n'ai toujours pas trouver de réponse.
Donc la situation est la suivante:
j'ai un formulaire qui doit enregistrer un déstockage dans une base MySql, si le stock possède un sous stock la modification s'éffectue après demande du sous stock. Soit un select qui apparait dans ce même formulaire. La page se recharge après séléction et enregistre le déstockage.
Le problème étant que sous FireFox tout fonctionne bien mais sous IE l'enregistrement est fait deux fois. J'ai pus lire qu'il pourais s'agir de mon code HTML, j'ais alors tous enlever pour avoir uniquement l'HTML et la seule erreur que me donne W3C est l'absence de "action" dans mon formulaire.
En effet comme le formulaire se charge plusieur fois avec des forme différente (select si sous-stock ou non) j'ai alors intégrer du javascript dans mon code php selon le cas pour passer au formulaire suivant:
echo "<script>document.form.action='prepa_commande.php'; document.form.submit(); </script>"; } }else{/*si la requette est null, le code barre ou le code article ne correspond à aucun enregistrement*/ echo " <script>alert('La saisie ne correspond à aucun article en stock.'); document.form.action='prepa_commande.php'; document.form.submit(); </script>";
Jusqu'a maintenant dans mes autres formulaires cette façon fonctionnait bien, je l'utilise pour forcer automatiquement le changement de formulaire sans que l'utilisateur intervienne.
Enfin je pense que cela peut venir de là mais si besoin je peut poster tout mon code (+200 ligne), et si quelqu'un à le même problème ou sais comment le résoudre veuillez m'aider.
Je vous remerci de votre aide.
PS: je programme en local avec EasyPhp.
A voir également:
- Double insertion dans la base MySql sous IE
- Double ecran - Guide
- Whatsapp double sim - Guide
- Base de registre - Guide
- Double driver - Télécharger - Pilotes & Matériel
- Double appel - Guide
1 réponse
Re,
j'ajoute mon code pour les courageux cela aidera peut-être à la compréhension:
Pendant que j'y suis, si vous savez comment faire des scrolbarlorsqu'on insère du code dans ce forum, meric de me le faire savoir.
Merci de votre aide.
j'ajoute mon code pour les courageux cela aidera peut-être à la compréhension:
<?php session_start(); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Document sans titre</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <LINK REL=stylesheet HREF='style.css' TYPE='text/css'> <script language='javascript' type="text/javascript"> <!-- function valider(){ alert("valider"); document.form.action="enregistre_prepa.php"; document.form.submit(); } --> </script> </head> <body onload="document.form.valid.focus()"> <form name="form" method="post" enctype="multipart/form-data"> <?php if (isset($_SESSION['identification'])){ if($_SESSION['fonction']=="gestion_commandes.php"){ $stock=$_SESSION['stock']; require_once ("connect.php"); require_once ("connexion.php"); require_once ("ExecRequete.php"); $connexion = Connexion (NOM, PASSE, BASE, SERVEUR); /*soit on a le code barre soit le code article*/ if ((isset($_POST['code_article'])&& $_POST['code_article']!="")||(isset($_SESSION['article'])&&$_SESSION['article']!="")){ if(isset($_POST['code_article'])){ $code_article="".$_POST['code_article']; $_SESSION['article']=$code_article; }else{ $code_article=$_SESSION['article']; } $requete="SELECT * FROM article WHERE Code_article = '$code_article'"; /*On prépare déjà la requete d'update qui sera utiliser plus tard*/ $finreq="Code_article = '$code_article'"; }else{ if(isset($_POST['code_barre'])&&$_POST['code_barre']!=""){ $code_barre="".$_POST['code_barre']; $_SESSION['code_barre']=$code_barre; }else{ $code_barre=$_SESSION['code_barre']; } $requete="SELECT * FROM article WHERE Code_barre ='$code_barre'"; $finreq="Code_barre ='$code_barre'"; } if(isset($_POST['quantite'])){ $_SESSION['quantite']=$_POST['quantite']; } $quantite=$_SESSION['quantite']; $resultat=ExecRequete($requete, $connexion); $tab=array(); $tab=mysql_fetch_assoc($resultat); if($tab!=null){ $stock_emp=$tab[$_SESSION['stock']]; print_r($stock_emp); $tab_emp=array(); $tab_emp=explode("||",$stock_emp); print_r($tab_emp); $nb_emp=count($tab_emp); if($nb_emp>1&&!isset($_POST['emplacement'])){ /*s'il y a plus d'un emplacement on laisse le choix*/ ?> <table border="0" cellpadding="0" cellspacing="0" width="98%" onload="valid.focus()"> <tr> <td colspan='3' height="35" align="center" bgcolor="#CCCCCC"><span class="tittrefen"> Choix de l'emplacement</span></td> </tr> <tr><td width="20%" height="35" align="right" bgcolor="#CCCCCC"> <select class="textefiche3" name="emplacement" size="1" style="background-color:#FFFF55"> <?php for($i=0;$i<$nb_emp;$i++){ if(isset($tab_emp[$i])){ $tab_emp2[$i]=explode("$*",$tab_emp[$i]); ?> <OPTION value=<?php echo $tab_emp[$i];?> ><?php echo $tab_emp2[$i][0];?></OPTION> <?php } }?> </select> </td><td width="5%" height="35" bgcolor="#CCCCCC"> </td><td width="20%" height="35" align="left" bgcolor="#CCCCCC"> <input id="valid" name="valid" type="submit" onClick="valider()" value="Valider"> </td></tr> </table> <?php }else{ if(isset($_POST['emplacement'])){ $emp=$_POST['emplacement']; echo "<script>alert(\"post $emp\");</script>" ; }else{ $emp=$stock_emp; echo "<script>alert(\"session $emp\");</script>" ; } $res=""; /*on enlève la quantité nécéssaire à la commande*/ for($i=0;$i<$nb_emp;$i++){ echo "<script>alert(\"dans for $tab_emp[$i] -- $emp\");</script>" ; if(strcmp($tab_emp[$i],$emp)==0){ echo "<script>alert(\"dans if\");</script>" ; $tab_emp2=explode("$*",$tab_emp[$i]); /*si le stock existe*/ if($tab_emp2[0]!=""){ /*si la quantité déplacée est supérieur à la quantité en stock on déplace uniquement ce que contient le stock*/ if($quantite>$tab_emp2[1]){ $quantite=$tab_emp2[1]; if($quantite!='0'&&$quantite!=""){ echo "<script>alert(\"La quantité désirée est indisponible en stock. Nouvelle quantité:'$quantite' \")</script>"; }else{ echo "<script>alert(\"Le stock est épuisé\")</script>"; } } echo "<script>alert(\"modif\");</script>" ; /*on fait la modif de valeur*/ $tab_emp2[1]=$tab_emp2[1]-$quantite; $tab_emp[$i]=$tab_emp2[0]."$*".$tab_emp2[1]; }else{ $quantite='0'; echo "<script>alert(\"Stock inexistant\")</script>"; } } if($i!=0){ $res.="||"; } $res.=$tab_emp[$i]; echo "<script>alert(\"fin for $tab_emp[$i] -- $emp\");</script>" ; } if($quantite!='0'){ /*on utilise la variable finreq creer au début*/ if(isset($emp)){ //echo "<script>alert(\"req: UPDATE article SET $stock = '$res' WHERE $finreq\");</script>" ; $requete="UPDATE article SET $stock = '$res' WHERE $finreq"; ExecRequete ($requete, $connexion); } /*on référence le mouvement dans l'historique*/ $ID_emp=$_SESSION['ID']; $id_article=$tab['ID_article']; $time=time(); $quantite_gstock=0; $Emplacement_Gstock=$tab['Emplacement_Gstock']; $tmp_gstock=explode("||",$Emplacement_Gstock); $nb_gstock=count($tmp_gstock); $tab_gstock=array(); for($i=0;$i<$nb_gstock;$i++){ $tab_gstock[$i]=explode("$*",$tmp_gstock[$i]); if(isset($tab_gstock[$i][1])){ $quantite_gstock+=$tab_gstock[$i][1]; } } $quantite_web=0; $Emplacement_web=$tab['Emplacement_web']; $tmp_web=explode("||",$Emplacement_web); $nb_web=count($tmp_web); $tab_web=array(); for($i=0;$i<$nb_web;$i++){ $tab_web[$i]=explode("$*",$tmp_web[$i]); if(isset($tab_web[$i][1])){ $quantite_web+=$tab_web[$i][1]; } } $quantite_picking=0; $Emplacement_picking=$tab['Emplacement_picking']; $tmp_picking=explode("||",$Emplacement_picking); $nb_picking=count($tmp_picking); $tab_picking=array(); for($i=0;$i<$nb_picking;$i++){ $tab_picking[$i]=explode("$*",$tmp_picking[$i]); if(isset($tab_picking[$i][1])){ $quantite_picking+=$tab_picking[$i][1]; } } switch ($stock){ case 'Emplacement_picking': $quantite_picking-=$quantite; break; case 'Emplacement_web': $quantite_web-=$quantite; break; case 'Emplacement_Gstock': $quantite_gstock-=$quantite; break; } /*7 car on déstock echo "<script>alert(\"insert histo\");</script>" ;*/ $requete = "INSERT INTO historique values('','$time','7','$ID_emp','$quantite_picking','$quantite_web','$quantite_gstock','$id_article')"; $resultat = ExecRequete ($requete, $connexion); /*on modifi le tableau des données saisie*/ $tabS=array(); $tabS[0]=$tab['Code_article']; $tabS[1]=$tab['Designation_A']; $tabS[2]=$tab_emp2[0]; $tabS[3]=$quantite; $nb_saisie=count($_SESSION['tabSaisie']); $tab_saisie=$_SESSION['tabSaisie']; $tab_saisie[$nb_saisie]=$tabS; $_SESSION['tabSaisie']=$tab_saisie; /*if(!isset($_POST['code_barre'])){ if(isset($_SESSION['code_barre']))$_SESSION['code_barre']=""; } if(!isset($_POST['code_article'])){ if(isset($_SESSION['article']))$_SESSION['article']=""; }*/ } echo "<script>document.form.action='prepa_commande.php'; document.form.submit(); </script>"; } }else{/*si la requette est null, le code barre ou le code article ne correspond à aucun enregistrement*/ echo " <script>alert('La saisie ne correspond à aucun article en stock.'); document.form.action='prepa_commande.php'; document.form.submit(); </script>"; } ?> </form> <?php Deconnexion($connexion); }else{ echo "<script language='Javascript'> document.location.href='autorisation.php'; </script>"; } }else{ echo "<script language='Javascript'> document.location.href='identification.php'; </script>"; } ?> </body> </html>
Pendant que j'y suis, si vous savez comment faire des scrolbarlorsqu'on insère du code dans ce forum, meric de me le faire savoir.
Merci de votre aide.
En effet si j'ai bien compris d'après ce que j'ai lu dans d'autres posts, IE interprète deux fois la page, et la deuxième fois j'ai des informations qui ne correspondent plus car une modification à déjà été faite. J'ai alors ajoute un if pour que la seconde fois (ne comportant pas tous les paramètres) ne change rien dans la base.
J'ai alors le fonctionnement que je cherchais, même si je n'ai pas vraiment trouvé de solution.
Si vous avez un problème similaire il serait bon de le faire savoir, merci
a+
document.form.submit();
tu envois deux submit du coup !!
ca ma débloquer et étant développer débutant c'est génial!
encore merci