Creation de doublons avec INSERT

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Creation de doublons avec INSERT

par sadeq » 22 nov. 2006, 11:48

Un numéro autoincrémenté utilisé comme clé primaire n'est pas une bonne idée pour assurer l'unicité d'un enregistrement.
Il faut choisir 1 ou plusieurs champs de la table pour construire une clé primaire ou un index unique.
Dans ton cas, la facture peut être identifiée d'une façon unique par les champs : id_utilisateur et la date ou l'id_utilisateur et la commande ou les trois ensemble.

Creation de doublons avec INSERT

par JMBJMB » 11 nov. 2006, 17:43

Bonjour,

j'ai beau triturer le code de la page ci-dessous, isoler la requete d'insertion..rien n'y fait : la requete SQL INSERT créee 2 enregistremenst identiques (ie. les données sont les mêmes, mais l'index est incrémenté...).
Je ne vois vraiment pas pkpoi ! Je m'arraches les cheveux !
ci desous le code de la page (nb : j'ai laissé 'exprès l'ensemble des INCLUDE, qui 'polluent peut être un peu la vision de l page, mais au cas où ils seraient en cause...) :
<body >
<div id="page">
	<? include ("$dirroot/inc/langue.php"); ?>
	<div id="content">
		<h1><br/><br/><? echo $page_menu ; ?></h1><br/>

	<?
	$SQL_commande_OK="SELECT * FROM jl_commandes WHERE id = '$commandeid'";
	$Q_commande_OK=mysql_query($SQL_commande_OK);
	$com_OK=mysql_fetch_object($Q_commande_OK);
	$numdoc=substr($com_OK->fichier,2);
	$doc="WF".$numdoc;
	
	$SQL_FACT = "
	INSERT INTO jl_factures (
		email
		,id_utilisateur
		, o_timestamp
		, statut
		, statut_details
		, client_info1
		, client_info2
		, commentaires
		, montant
		, paiement
		, transport
		, cout_transport
		, fichier
		,commande
	) VALUES (
		 '{$_SESSION['utilisateur']['email']}'
		,'{$_SESSION['utilisateur']['id_utilisateur']}'
		,now()
		,2
		,'paiement cb accepté'
		,'".addslashes($com_OK->client_info1)."'
		,'".addslashes($com_OK->client_info2)."'
		,'".addslashes($com_OK->commentaires)."'
		,'".$com_OK->montant."'
		,'".$com_OK->client->paiement."'
		,'".$com_OK->transport."'
		,'".$com_OK->cout_transport."'
		,'".$doc."'
		,'".$com_OK->fichier."'
	)";
	
	$Q_FACT=mysql_query($SQL_FACT);
/*	$fact_id = mysql_insert_id();
	echo  "N° de Facture Créee : $fact_id <br/>";
	$sql = "UPDATE jl_commandes SET statut = '2', statut_details = 'paiement cb accepté'  facture ='$doc' WHERE id = '$commandeid'"; 
	$res = mysql_query($sql);
*/
	$_SESSION['caddie']->init();
	vide_commandeinfo();
	unset ($_SESSION['wantsurl']);?>

		<br/>
		<br/>
		<br/>
	</div>
</div>


</body>
</html>
Merci bcp pour votre aide,
Cdt,
JM