Besoin de faire une requête dans un boucle
pedro-webmaster
Messages postés
30
Statut
Membre
-
pedro-webmaster Messages postés 30 Statut Membre -
pedro-webmaster Messages postés 30 Statut Membre -
Bonjour,
j'ai besoin de faire une requête dans un boucle mais il me donne cette erreur je sais pas quel la solution !!!!
Duplicata du champ '26' pour la clef 'PRIMARY'
et voila mon code source
if($nbre!=0)
{
$dernierNumero=mysql_result($resultat, 0, "nbc");
}
else
{
$dernierNumero=0;
}
for($i=0; $i<$NbreProd; $i++)
{
$numAchat=$dernierNumero;
$ref=$_SESSION['panier']['ref'][$i];
$qte=$_SESSION['panier']['qte'][$i];
$req2="insert into detai_commande(nbc, code_produit, qte_commande) values('$numAchat','$ref', '$qte')";
mysql_query($req2)or die(mysql_error());
}
merci
j'ai besoin de faire une requête dans un boucle mais il me donne cette erreur je sais pas quel la solution !!!!
Duplicata du champ '26' pour la clef 'PRIMARY'
et voila mon code source
if($nbre!=0)
{
$dernierNumero=mysql_result($resultat, 0, "nbc");
}
else
{
$dernierNumero=0;
}
for($i=0; $i<$NbreProd; $i++)
{
$numAchat=$dernierNumero;
$ref=$_SESSION['panier']['ref'][$i];
$qte=$_SESSION['panier']['qte'][$i];
$req2="insert into detai_commande(nbc, code_produit, qte_commande) values('$numAchat','$ref', '$qte')";
mysql_query($req2)or die(mysql_error());
}
merci
A voir également:
- Besoin de faire une requête dans un boucle
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ✓ - Forum Android
- Vlc lecture en boucle ✓ - Forum Lecteurs et supports vidéo
- Requete sql pix - Forum PHP
1 réponse
Salut,
Imaginons que la dernière ligne dans la table ait 26 comme valeur dans la colonne ndc.
La fonction mysql_result va te retourner ce nombre.
Plus loin, tu tentes une insertion en utilisant la variable contenant le résultat de mysql_result, donc 26. Ta requête revient donc à ça :
Il faut donc l'incrémenter comme je te l'ai dit dans ton précédent sujet.
Imaginons que la dernière ligne dans la table ait 26 comme valeur dans la colonne ndc.
La fonction mysql_result va te retourner ce nombre.
Plus loin, tu tentes une insertion en utilisant la variable contenant le résultat de mysql_result, donc 26. Ta requête revient donc à ça :
INSERT INTO table(ndc,...) VALUES(26,...)Et la, l'erreur apparaît : une clé primaire (ndc) valant 26 existe déjà !
Il faut donc l'incrémenter comme je te l'ai dit dans ton précédent sujet.
if($nbre!=0) {
$dernierNumero = mysql_result($resultat, 0, "nbc");
$dernierNumero++;
} else {
$dernierNumero = 1;
}
pouvez-vous me donner une autre solution
Parce que cette solution sa marche pas
Et ta table se nomme-t-elle bien « detai_commande » ? Je pense quil manque une lettre, ou deux si c'est au pluriel.
Il faut aussi incrémenter $dernierNumero à la fin de la boucle.
if($nbre!=0) { $dernierNumero = mysql_result($resultat, 0, "nbc"); $dernierNumero++; } else { $dernierNumero = 1; } for($i = 0 ; $i < $NbreProd ; $i++) { $numAchat = $dernierNumero; $ref = $_SESSION['panier']['ref'][$i]; $qte = $_SESSION['panier']['qte'][$i]; $req2 = 'INSERT INTO detai_commande(nbc, code_produit, qte_commande) ' . 'VALUES('.$numAchat.', "'.$ref.'", '.$qte.')'; mysql_query($req2) or die(mysql_error()); $dernierNumero++; }