je suis depuis un moment à essayer de comprendre ce qui se passe lorsque j'envoie une commande d'insertion en bdd et que je me retrouve avec des insertions doublées.
Voilà mon code:
CODE
il s'agit d'ajouter des pdts en BDD dans la table panier_temp, qui contient les champs suivants :
id indexé avec autoincrement
session
ref
prix
soustotal
Si je fais ça :
if(isset($_GET['ajouter'])) {
$req = mysql_query("SELECT id,ref,prix FROM produits WHERE id='".$_GET['ajouter']."'");
if(mysql_num_rows($req)) {
$pdt = mysql_fetch_object($req);
$req = mysql_query("INSERT INTO panier_temp SET pdt='".$pdt->id."', ref='".$pdt->ref."', prix='".$pdt->prix."', soustotal='".$pdt->prix."'");
}
}
tout est nickel
Mais j'ai besoin de conserver également l'identifiant de session dans la table, et si je fais ça :
if(isset($_GET['ajouter'])) {
[b]$session = session_id();[/b]
$req = mysql_query("SELECT id,ref,prix FROM produits WHERE id='".$_GET['ajouter']."'");
if(mysql_num_rows($req)) {
$pdt = mysql_fetch_object($req);
$req = mysql_query("INSERT INTO panier_temp SET [b]session='".$session."'[/b], pdt='".$pdt->id."', ref='".$pdt->ref."', prix='".$pdt->prix."', soustotal='".$pdt->prix."'");
}
}
eh bien je me retrouve avec 2 enregistrements identiques en BDD :wacko:
id indexé avec autoincrement
session
ref
prix
soustotal
Si je fais ça :
if(isset($_GET['ajouter'])) {
$req = mysql_query("SELECT id,ref,prix FROM produits WHERE id='".$_GET['ajouter']."'");
if(mysql_num_rows($req)) {
$pdt = mysql_fetch_object($req);
$req = mysql_query("INSERT INTO panier_temp SET pdt='".$pdt->id."', ref='".$pdt->ref."', prix='".$pdt->prix."', soustotal='".$pdt->prix."'");
}
}
tout est nickel
Mais j'ai besoin de conserver également l'identifiant de session dans la table, et si je fais ça :
if(isset($_GET['ajouter'])) {
[b]$session = session_id();[/b]
$req = mysql_query("SELECT id,ref,prix FROM produits WHERE id='".$_GET['ajouter']."'");
if(mysql_num_rows($req)) {
$pdt = mysql_fetch_object($req);
$req = mysql_query("INSERT INTO panier_temp SET [b]session='".$session."'[/b], pdt='".$pdt->id."', ref='".$pdt->ref."', prix='".$pdt->prix."', soustotal='".$pdt->prix."'");
}
}
eh bien je me retrouve avec 2 enregistrements identiques en BDD :wacko:
J'ai vraiment tourné et retourné tout ça pour essayer de comprendre pourquoi mon insertion se doublait....
Vraiment je ne comprends pas....
En mettant un champ date de type timestamp dans la table, je vois apparaitre une seule différence entre les 2 lignes : un écart d'une seconde entre le premier et le deuxième.
Mais qu'est-ce qui se passe ??????