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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Dupliquer un enregistrement

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Dupliquer un enregistrement

n°1200319
freed102
Arayashiki
Posté le 15-09-2005 à 12:52:50  profilanswer
 

J'aimerai dupliquer un enregistrement avec un nouveau ID... je connais pas trop ces fonctions là en SQL...
 
je vous explique plus en détails... j'ai trois tables  
 
factures => numero_facture, id, date...
references_facture =>numero_facture, num_ref,titre....
items_facture=>numero_facture,num_ref,item, libelle, quantite,prix
 
 
mon script PHP me permet de construire des devis ou des factures.. il utilise pour ça les mêmes tables SQL... la difference entre un devis et une facture c'est son numero... sur un devis, la personne n'a qu'à cliquer sur un bouton "transformer en facture" et son numero change... et ça devient une facture...
 
Jusque là tout va bien...
 
le probleme c'est que quand un devis devient une facture.. il disparait de la liste des devis.. c pourquoi je voudrais dupliquer l'enregistrement plutot que de l'updater afin d'avoir une "copie" du devis et une facture...
 
comment feriez-vous ?


---------------
Freed102
mood
Publicité
Posté le 15-09-2005 à 12:52:50  profilanswer
 

n°1200326
olivthill
Posté le 15-09-2005 à 13:08:07  profilanswer
 

Au lieu d'utiliser UPDATE, utiliser INSERT.

n°1200328
freed102
Arayashiki
Posté le 15-09-2005 à 13:09:06  profilanswer
 

olivthill a écrit :

Au lieu d'utiliser UPDATE, utiliser INSERT.


oui mais ça m'oblige à recopier chaque champs.. et je voulais eviter ça


---------------
Freed102
n°1200375
freed102
Arayashiki
Posté le 15-09-2005 à 14:01:36  profilanswer
 

olivthill a écrit :

Au lieu d'utiliser UPDATE, utiliser INSERT.


 
j'ai lu sur un autre post que peut etre il faut faire un truc du genre :
 
INSERT INTO factures SELECT * FROM factures WHERE numero_facture='DEV000024';  
 
... mais à ce moment là comment je redefinis le numero de facture ?
 
comme ça ?  
 
 
INSERT INTO factures (numero_factures) VALUES ('000123') SELECT * FROM factures WHERE numero_facture=DEV000024;
 
.. ça me parait tordu !  :sweat:


Message édité par freed102 le 15-09-2005 à 14:06:35

---------------
Freed102
n°1200387
Beegee
Posté le 15-09-2005 à 14:10:14  profilanswer
 

INSERT INTO factures
SELECT '000123', champ2, champ3, <...>, champN
FROM factures
WHERE numero_facture='DEV000024';

n°1200392
freed102
Arayashiki
Posté le 15-09-2005 à 14:11:52  profilanswer
 

je capte pas là ! :sweat: pourquoi la valeur de mon champ se retrouve dans la liste des champs du select ?


---------------
Freed102
n°1200399
Beegee
Posté le 15-09-2005 à 14:18:52  profilanswer
 

En SQL, tu peux mettre une valeur constante dans un SELECT, une valeur qui donc en elle-même n'a pas de lien avec la table ...
 
Autre exemple:
 
SELECT 'TOTO' from maTable;
 
renvoie autant de fois TOTO qu'il y a de lignes dans la table.

n°1200405
freed102
Arayashiki
Posté le 15-09-2005 à 14:25:56  profilanswer
 

ah bon.... je savais pas ça... mais là dans mon cas je suis obligé de lister tous les champs ? SELECT '000123', champs2,champ3..." ?


---------------
Freed102
n°1200407
Beegee
Posté le 15-09-2005 à 14:26:37  profilanswer
 

Oui, je connais pas d'autre syntaxe.

n°1200422
freed102
Arayashiki
Posté le 15-09-2005 à 14:33:38  profilanswer
 

je viens d'essayer sur une table d'essai... ça a l'air de fonctionner !


---------------
Freed102
mood
Publicité
Posté le 15-09-2005 à 14:33:38  profilanswer
 

n°1200439
Beegee
Posté le 15-09-2005 à 14:41:48  profilanswer
 

Tu en doutais ? :D

n°1200525
freed102
Arayashiki
Posté le 15-09-2005 à 15:49:35  profilanswer
 

bah je connaissais pas trop ces especes de formules magiques ! donc oui j'en doutais ! j'ai donc fait ça :
 

Code :
  1. if($_SESSION['new_numero_facture']!=$_SESSION['numero_facture'] && $_SESSION['duplicate']=true)
  2. {
  3. $dupl_sql1="INSERT INTO factures SELECT '$_SESSION[new_numero_facture]', '$_SESSION[type_commande]',id,contact,titre,total_ht,date_reg,date_modif,reglement,type_reglement,modalites_reglement,date_reglement,observations,tva  FROM factures WHERE numero_facture='$_SESSION[numero_facture]';";
  4. $dupl_sql2="INSERT INTO references_factures SELECT '$_SESSION[new_numero_facture]',num_ref, titre,contact,prix_ht FROM references_factures WHERE numero_facture='$_SESSION[numero_facture]';";
  5. $dupl_sql3="INSERT INTO items_facture SELECT '$_SESSION[new_numero_facture]',num_ref,item,libelle,quantite,prix_unitaire FROM items_facture WHERE numero_facture='$_SESSION[numero_facture]';";
  6.     if(mysql_query($dupl_sql1) or die(mysql_error()) && mysql_query($dupl_sql2) or die(mysql_error()) && mysql_query($dupl_sql3) or die(mysql_error()) )
  7.     {
  8.     $_SESSION['infos_dupli']="La facture à bien été dupliquée<br />";
  9.     $_SESSION['duplicate']=false;
  10.     $_SESSION['numero_facture']=$_SESSION['new_numero_facture'];
  11.     }
  12.     else
  13.     {
  14.     $_SESSION['infos_dupli']="Impossible de dupliquer la facture<br />";
  15.     }
  16.     //echo $sql1.$sql2.$sql3;
  17. }


 
... et ça a l'air de fonctionner... on bien verra quand mon boss va me dire "YA UN BUG !!!!"


Message édité par freed102 le 15-09-2005 à 16:01:24

---------------
Freed102

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Dupliquer un enregistrement

 

Sujets relatifs
localisation d'enregistrement dans une base avec le code VB ?Comment dupliquer un code ?
[MySQL]Récupérer un seul enregistrementVBA excel pb pour récupérer le chemin d'enregistrement et le réinject
[MySQL] Selection d'un enregistrement aléatoire [Résolu][MySQL] Exporter/Dupliquer une bd avec script PHP ?
enregistrement resultat requete dans un champ?[resolu]ouverture et enregistrement
Problème Compteur d'enregistrementdupliquer un enregistrement mysql ?
Plus de sujets relatifs à : Dupliquer un enregistrement


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