Mysql Insertion en double

WRInaute occasionnel
Bonjour à tous,

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

Voici mon code :

Code:
<? 
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>'; 

?>
 
WRInaute passionné
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 ?
 
WRInaute occasionnel
ç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:
<script langage='javascript'>
function Cloturer(){
document.forms['form1'].action ='Crea_Tarif2.php';
document.forms['form1'].submit();
}
</script>


et le bouton :

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

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

Code:
<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:
<!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:
<? 
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>'; 

?>
 
WRInaute passionné
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:
<? 
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>'; 


?>
 
WRInaute discret
Et ca fait quoi si tu enleves le javascript (qui au passage ne sert a rien, ou alors j'ai pas compris) ?
 
WRInaute discret
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 ?
 
WRInaute impliqué
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 ;)
 
WRInaute occasionnel
[résolu] Mysql Insertion en double

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

Merci de votre aide
 
Discussions similaires
Haut