Mysql Insertion en double


webac
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 374
Inscription: 4 Mar 2005

Mysql Insertion en double

Message le Ven Aoû 07, 2009 15:15

Bonjour à tous,

Je rencontre un petit problème sur une requête INSERT pourtant simple, les enregistrements sont doublés.

Voici mon code :

Code: Tout sélectionner
<?
include ('connexion.php');
for ($i = 0; $i < sizeof($_POST['Id']); $i++)
{

$sql = "INSERT INTO tarif (Nom, Id, Pachat, Pvente)
        VALUES
       ('" . $_POST['Nom'] . "','" . $_POST['Id'][$i] . "', '" . $_POST['Pachat'][$i] . "', '" . $_POST['Pvente'][$i] . "')" ;

}

echo '<center><font color="red" size ="14">Tarif Cr&eacute;e avec succ&egrave;s</font></center>';

?>


5_legs
WRInaute passionné
WRInaute passionné
 
Messages: 2072
Inscription: 30 Avr 2006

Re: Mysql Insertion en double

Message le Ven Aoû 07, 2009 15:19

Bonjour,

Je doute que cela provienne de la requête

Si tu essayes d'afficher les informations au lieu d'exécuter ta requête ça donne quoi ?


webac
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 374
Inscription: 4 Mar 2005

Re: Mysql Insertion en double

Message le Ven Aoû 07, 2009 15:25

ça ne vient effectivement pas de la requête, j'ai lu sur d'autre forums que cela pouvait provenir du javascript lié au bouton(Image) de mon formulaire mais je ne vois pas trop ce que je dois modifier .

Voici le code lié à mon bouton :

Code: Tout sélectionner
<script langage='javascript'>
function Cloturer(){
document.forms['form1'].action ='Crea_Tarif2.php';
document.forms['form1'].submit();
}
</script>



et le bouton :

Code: Tout sélectionner
<img src="accepte.gif" style="cursor: pointer" onClick="Cloturer();">


j'ai testé ceci également mais même résultat :

Code: Tout sélectionner
<input name="Submit" type="image" src="accepte.gif" alt="Valider la selection" align="bottom" width="20" height="20" onClick="Cloturer()" value="Cloturer"/>
Merci de votre aide


Pour ceux que ça intéresse voici l'ensemble du code des deux pages :

Page du Formulaire :

Code: Tout sélectionner
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Cr&eacute;ation d'un Tarif</title>
<style type="text/css">
<!--
.Style1 {
   color: #000000;
   font-weight: bold;
   font-size: 36px;
}
-->
</style>
</head>
<body>
<div align="center"><p class="Style1">Cr&eacute;ation d'un Tarif</p></div>
   
   <form id="form1" name="form1" method="post" action="Crea_Tarif2.php">
    <div align="center"><strong>Nom du Tarif :</strong><input name="Nom" type="text" id="Nom" size="15" /></div>
      <table width="50%" border="1" align="center" bordercolor="#FFFFFF">
        <tr>
         <td><strong>Produit</strong></td>
         <td><center><strong>Prix d'Achat</strong></center></td>
         <td><center><strong>Prix de Vente</strong></center></td>
       </tr>
      <br />
  <td bgcolor="#FFFFFF" class="intitule">    <div align="center"><font size="5"></font></div></td>
<? include ('../connexion.php'); ?>
<?php

$sql = "SELECT DISTINCT lib,id, position from produits WHERE 1 ORDER BY position";

$resultat = mysql_query ($sql);

$nblignes = mysql_num_rows($resultat);
$i = 0;
while ($cl = mysql_fetch_array ($resultat))
{

$couleur = "#5389EE";
$i++;

   if ($i % 2 ==1)
   {
   $couleur = "#0066CC";
   }
  $lib  = $cl['lib'];
  $id   = $cl['id'];
 
  echo "<tr BGCOLOR=$couleur>\n";
  echo "<td><font size=2 color=white><b>$lib<b></font></td>\n";
  echo "<td><center><input type=text name=Pachat[] size=5></center></td>\n";
  echo "<td><center><input type=text name=Pvente[] size=5></center></td>\n";
  echo "<input type=hidden name=Id[] value=$id></center></td>\n";
  echo "</tr>\n";
}


mysql_close()
?>
</table>   
<br />
<div align="center">Cliquez sur l'icone pour valider la s&eacute;lection :</div>
<div align="center"><input name="Submit" type="image" src="accepte.gif" alt="Valider la selection" align="bottom" width="20" height="20" value="Cloturer"/></div>
</form>
</body>
</html>



Page de traitement :

Code: Tout sélectionner
<?
include ('connexion.php');
for ($i = 0; $i < sizeof($_POST['Id']); $i++)
{

$sql = "INSERT INTO tarif (Nom, Id, Pachat, Pvente)
        VALUES
       ('" . $_POST['Nom'] . "','" . $_POST['Id'][$i] . "', '" . $_POST['Pachat'][$i] . "', '" . $_POST['Pvente'][$i] . "')" ;
$res=mysql_query($sql);

}

echo '<center><font color="red" size ="14">Tarif Cr&eacute;e avec succ&egrave;s</font></center>';

?>
Dernière édition par webac le Ven Aoû 07, 2009 15:54, édité 1 fois.

Moof
WRInaute discret
WRInaute discret
 
Messages: 206
Inscription: 22 Mar 2003

Re: Mysql Insertion en double

Message le Ven Aoû 07, 2009 15:52

Faudrait pas remplacer
Code: Tout sélectionner
$_POST['Nom']
par
Code: Tout sélectionner
$_POST['Nom'][$i]
?


webac
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 374
Inscription: 4 Mar 2005

Re: Mysql Insertion en double

Message le Ven Aoû 07, 2009 15:56

euh!!!!!!!! non pas vraiment mais merci de ton aide


5_legs
WRInaute passionné
WRInaute passionné
 
Messages: 2072
Inscription: 30 Avr 2006

Re: Mysql Insertion en double

Message le Ven Aoû 07, 2009 16:06

Oui mais là, tu ne sais pas si c'est ton action qui est exécutée 2 fois ou si cela vient d'ailleurs

D'où mon idée d'afficher le résultat

Code: Tout sélectionner
<?
include ('connexion.php');
for ($i = 0; $i < sizeof($_POST['Id']); $i++)
{

$sql = "INSERT INTO tarif (Nom, Id, Pachat, Pvente)
        VALUES
       ('" . $_POST['Nom'] . "','" . $_POST['Id'][$i] . "', '" . $_POST['Pachat'][$i] . "', '" . $_POST['Pvente'][$i] . "')" ;

echo $i . ' = ' . $_POST['Nom'] . ' - '  . $_POST['Id'][$i] . ' - '  . $_POST['Pachat'][$i] . ' - '  . $_POST['Pvente'][$i] . '<br />' ;
}

echo '<center><font color="red" size ="14">Tarif Cr&eacute;e avec succ&egrave;s</font></center>';


?>

Moof
WRInaute discret
WRInaute discret
 
Messages: 206
Inscription: 22 Mar 2003

Re: Mysql Insertion en double

Message le Ven Aoû 07, 2009 18:45

Et ca fait quoi si tu enleves le javascript (qui au passage ne sert a rien, ou alors j'ai pas compris) ?

Emorej
WRInaute discret
WRInaute discret
 
Messages: 83
Inscription: 25 Oct 2007

Re: Mysql Insertion en double

Message le Sam Aoû 08, 2009 8:37

Bonjour,
Et si tu mets simplement :
<a href="javascript:document.form1.submit()"><img src="accepte.gif"/></a>

en supprimant ta fonction javascript, qu'est ce que ça donne ?


RiPSO
WRInaute passionné
WRInaute passionné
 
Messages: 1591
Inscription: 4 Oct 2007

Re: Mysql Insertion en double

Message le Dim Aoû 09, 2009 6:24

a priori je dirai que ca s'execute deux fois car c'est executé via le formulaire et aussi via le javascript. Ton javascript ne sert strictement à rien à part t'ajouter des problèmes de compatibilité avec ceux qui auront désactivé le javascript ;)


webac
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 374
Inscription: 4 Mar 2005

[résolu] Mysql Insertion en double

Message le Lun Aoû 10, 2009 8:13

J'ai retiré le javascript qui effectivement ne sert à rien et tout se passe bien.

Merci de votre aide


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité