Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2816 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Duplicate entry '2' for key 1

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Duplicate entry '2' for key 1

n°1140239
freed102
Arayashiki
Posté le 05-07-2005 à 12:00:59  profilanswer
 

"Duplicate entry '2' for key 1"
 
ça veut dire quoi ?  
j'arrive pas à savoir de quoi il s'agit, j'ai pas de numero de ligne, je sais pas si c une erreur mysql ou php... je soupçonne une erreur concernant les foreach que j'ai dans mon code.. mais là je sais pas ! je suis perdu !

mood
Publicité
Posté le 05-07-2005 à 12:00:59  profilanswer
 

n°1140241
cesarr89
Posté le 05-07-2005 à 12:01:58  profilanswer
 

Erreur de MySQL
 
Edit: tu veux dupliquer ta clé, c'est pas possible.


Message édité par cesarr89 le 05-07-2005 à 12:02:57
n°1140242
freed102
Arayashiki
Posté le 05-07-2005 à 12:02:57  profilanswer
 

qui voudrait dire quoi ?

n°1140243
freed102
Arayashiki
Posté le 05-07-2005 à 12:03:11  profilanswer
 

ah ok !

n°1140248
freed102
Arayashiki
Posté le 05-07-2005 à 12:05:33  profilanswer
 

un clef doit etre unique c'est ça ?  
en fait dans mon code je supprime un enregistrement et je le recree... (avec le même numero de clef) peut etre que l'erreur vient de la ?

n°1140249
cesarr89
Posté le 05-07-2005 à 12:07:20  profilanswer
 

freed102 a écrit :

un clef doit etre unique c'est ça ?  


 
Bah oui c'est la définition.
 
Edit: Tu as déjà fais des BD?


Message édité par cesarr89 le 05-07-2005 à 12:08:19
n°1140250
freed102
Arayashiki
Posté le 05-07-2005 à 12:08:11  profilanswer
 

bon sinon comment on retire l'attribut "key" d'un champ en mysql ?

n°1140252
cesarr89
Posté le 05-07-2005 à 12:08:58  profilanswer
 

freed102 a écrit :

bon sinon comment on retire l'attribut "key" d'un champ en mysql ?


 
C'est toi qui a fait la base de données?
Explique moi concrétement ton problème.

n°1140279
freed102
Arayashiki
Posté le 05-07-2005 à 12:22:25  profilanswer
 

oui c moi qui ait fait la base de données, en fait je fais un systeme de devis/facturation...
j'ai donc trois tables
 
factures -> references_factures ->items_facture
 
au debut la difference entre un devis et une facture etait juste un champs 'type_commande' qui indiquait "facture" ou "devis"... il suffit de cliquer sur un bouton pour transformer un devis en facture et vis versa. Maintenant je me rends compte qu'il y a un probleme concernant l'attribution des numeros de facture... il ne peut pas y avoir de "trou" dans la numerotation des factures, au debut les devis etaient inclus dans la même serie que les factures... hors on suppose qu'un devis n'est pas forcement accepté... dans ce cas... ça provoquerait un "trou" dans la facturation.. ce qui n'est pas correct... donc j'ai decidé de changer de systeme de numerotation en séparant les devis des factures...
 
les devis commencent par DEV000001 (et s'incrémentent de 1)
les factures sont sous la forme 0000356 (et s'incrémentent de 1)
 
si un devis devient une facture.. il reprends la série des factures (0000357) en incrémentant de 1... logiquement comme ça il ne peut pas y avoir de trou dans les factures puisque il prends toujours le dernier nombre et ajoute 1.
 
simplement j'ai du m'emmeler les crayons au niveau du SQL pour effacer et recreer mes enregistrements...  
 
un bout de code pour comprendre mieux :
 

Code :
  1. if($save_facture)
  2. {
  3. if(isset($_SESSION['date_reglement']))
  4. {
  5. $new_date=explode("/",$_SESSION['date_reglement']);
  6. $date_reg2=strtotime($new_date[2]."-".$new_date[1]."-".$new_date[0]);
  7. }
  8.   $req="SELECT * FROM factures WHERE numero_facture='$_SESSION[numero_facture]';";
  9.   //echo $req."<br />";
  10.   $query1=mysql_query($req);
  11.   $numrows=mysql_num_rows($query1);
  12.   if($numrows<1)
  13.   {
  14.   //echo $numrows."<br />";
  15.    $sql="INSERT INTO factures(numero_facture,type,id,contact, titre,total_ht, date_reg,date_modif,reglement,type_reglement,modalites_reglement,date_reglement,observations)";
  16.    $sql.="VALUES ('$_SESSION[new_numero_facture]','$_SESSION[type_commande]','$_SESSION[current_client]','$_SESSION[current_contact]','$_SESSION[titre_facture]', '$_SESSION[total_ht]', '$date','$date','$_SESSION[reglement]','$_SESSION[type_reglement]','$_SESSION[modalites_reglement]','$date_reg2','$_SESSION[observations]');";
  17.    //echo $sql."<br />";
  18.     if(mysql_query($sql) or die(mysql_error()))
  19.     {
  20.     $_SESSION['infos']="La facture à bien été enregistrée";
  21.     }
  22.     else
  23.     {
  24.     $_SESSION['infos']="Impossible d'enregistrer la facture";
  25.     }
  26.   }
  27.   else
  28.   {
  29.    $sql="UPDATE factures SET numero_facture='$_SESSION[new_numero_facture]',id='$_SESSION[current_client]',type='$_SESSION[type_commande]',contact='$_SESSION[current_contact]',titre='$_SESSION[titre_facture]',total_ht='$_SESSION[total_ht]',date_modif='$date',reglement='$_SESSION[reglement]',type_reglement='$_SESSION[type_reglement]',date_reglement='$date_reg2',observations='$_SESSION[observations]' WHERE numero_facture='$_SESSION[numero_facture]';";
  30.    //echo $req."<br />";
  31.    if(mysql_query($sql) or die(mysql_error()))
  32.    {
  33.    $_SESSION['infos']="La facture à bien été mise à jour<br />";
  34.    }
  35.    else
  36.    {
  37.    $_SESSION['infos']="Impossible de mettre à jour la facture<br />";
  38.    }
  39.   }
  40.   //print_r($_SESSION['ref']);
  41.   $sql="DELETE FROM references_factures WHERE numero_facture='$_SESSION[numero_facture]';";
  42.    if(mysql_query($sql) or die(mysql_error()))
  43.    {
  44.    $_SESSION['infos']="La facture à bien été mise à jour<br />";
  45.    }
  46.    else
  47.    {
  48.    $_SESSION['infos']="Impossible de mettre à jour la facture<br />";
  49.    }
  50.   foreach($_SESSION['ref'] as $key1=>$value)
  51.   {
  52.   $ref_num_ref=$_SESSION['ref'][$key1]['number'];
  53.   $ref_titre=$_SESSION['ref'][$key1]['titre'];
  54.   if(isset($_SESSION['ref'][$key1]['date']))
  55.   {
  56.   $new_date=explode("/",$_SESSION['ref'][$key1]['date']);
  57.   $ref_date2=strtotime($new_date[2]."-".$new_date[1]."-".$new_date[0]);
  58.   }
  59.   $ref_contact=$_SESSION['ref'][$key1]['contact_ref'];
  60.   $ref_prix_ht=$_SESSION['ref'][$key1]['prix_ht'];
  61.    $sql="INSERT INTO references_factures (numero_facture,num_ref,titre,date,contact,prix_ht) ";
  62.     $sql.="VALUES ('$_SESSION[new_numero_facture]','$ref_num_ref','$ref_titre','$ref_date2','$ref_contact', '$ref_prix_ht');";
  63.     //echo $sql."<br />";
  64.      if(mysql_query($sql) or die(mysql_error()))
  65.      {
  66.      $_SESSION['infos']="La référence à bien été enregistrée";
  67.      }
  68.      else
  69.      {
  70.      $_SESSION['infos']="Impossible d'enregistrer la référence";
  71.      }
  72.   $req="SELECT * FROM items_facture WHERE numero_facture='$_SESSION[numero_facture]' AND num_ref='$ref_num_ref'";
  73.   //echo $req."<br />";
  74.   $query1=mysql_query($req);
  75.   $numrows=mysql_num_rows($query1);
  76.   //echo $numrows."<br />";
  77.   if($numrows>=1)
  78.   {
  79.    $sqldel="DELETE FROM items_facture WHERE numero_facture='$_SESSION[numero_facture]' AND num_ref='$ref_num_ref' ";
  80.    //echo $req."<br />";
  81.    if(mysql_query($sqldel) or die(mysql_error()))
  82.    {
  83.    $_SESSION['infos']="La facture à bien été mise à jour<br />";
  84.    }
  85.    else
  86.    {
  87.    $_SESSION['infos']="Impossible de mettre à jour la facture<br />";
  88.    }
  89.   }
  90.  foreach($_SESSION['item'] as $key=>$value)
  91.   {
  92.   if($_SESSION['item'][$key]['ref']==$key1)
  93.   {
  94.   $libelle=$_SESSION['item'][$key]['libelle'];
  95.   $quantite=$_SESSION['item'][$key]['quantites'];
  96.   $prix_unitaire=$_SESSION['item'][$key]['prix_unitaire'];
  97.   $ref_num_ref=$_SESSION['ref'][$key1]['number'];
  98.    if(!empty($quantite))
  99.    {
  100.    $sql="INSERT INTO items_facture (numero_facture,num_ref,item,libelle, quantite,prix_unitaire)";
  101.    $sql.="VALUES ('$_SESSION[new_numero_facture]','$ref_num_ref','$key','$libelle','$quantite', '$prix_unitaire');";
  102.    //echo $sql."<br />";
  103.     if(mysql_query($sql) or die(mysql_error()))
  104.     {
  105.     $_SESSION['infos']="La facture à bien été enregistrée";
  106.     $_SESSION['numero_facture']=$_SESSION['new_numero_facture'];
  107.     }
  108.     else
  109.     {
  110.     $_SESSION['infos']="Impossible d'enregistrer la facture";
  111.     }
  112.    }
  113.   }
  114.   }
  115. }
  116. }


n°1141006
freed102
Arayashiki
Posté le 05-07-2005 à 17:04:33  profilanswer
 

c bon j'ai corrigé mon erreur... conflit de numero de facture


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Duplicate entry '2' for key 1

 

Sujets relatifs
pb avec duplicate movie clipCaractères accentués et entry
[java] erreur : "duplicate class" 
Plus de sujets relatifs à : Duplicate entry '2' for key 1


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)