comment dupliquer une ligne dans ma base de donnée

comment dupliquer une ligne dans ma base de donnée - PHP - Programmation

Marsh Posté le 09-06-2005 à 08:23:27    

Hello,  
(euh... j'ai mis dans le php parceque ai pas trouvé le mysql)
Question toute bête... à la quelle je ne trouve de réponse !!??
 
Je voudrais smplement dupliquer une ligne dans ma base de donnée : n'existerait-il pas une fonction à utiliser du style "duplicate machin where id est de tant"
 
Si elle n'existe pas : la meilleur facon est-elle derécupérer le contenu de la ligne à dupliquer et de faireun update???  
 
d'avance grand merci pour vos réponses / idées !!
 
a+

Reply

Marsh Posté le 09-06-2005 à 08:23:27   

Reply

Marsh Posté le 09-06-2005 à 08:26:48    

hdh a écrit :

Hello,  
(euh... j'ai mis dans le php parceque ai pas trouvé le mysql)
Question toute bête... à la quelle je ne trouve de réponse !!??
 
Je voudrais smplement dupliquer une ligne dans ma base de donnée : n'existerait-il pas une fonction à utiliser du style "duplicate machin where id est de tant"
 
Si elle n'existe pas : la meilleur facon est-elle derécupérer le contenu de la ligne à dupliquer et de faireun update???
 
d'avance grand merci pour vos réponses / idées !!
 
a+


 
Un INSERT tu veux dire?
 
Sinon bah je pense qu'il y ai une fonction duplicate, mais c'est dans quel but que tu en as besoin? Pourquoi tu veux dupliquer tes données?


---------------
!== Force et honneur ==!
Reply

Marsh Posté le 09-06-2005 à 08:30:31    

existe pas ??
=> snif
 
pourquoi ??
=> en fait à chaque inscription du nv membre je dois dupliquer certaines données (son profil par défaut) pour qu'il puisse les adapter comme bon lui semble par la suite. et je ne veux pas mettre en dure dans ma page un gros insert car je voudrais que cela soit dynamique...
 
=> tu ferais comment toi ???  
euh.. au fait merci pr ta réponse ;)
 
a+
 

cesarr89 a écrit :

Un INSERT tu veux dire?
Sinon bah je pense qu'il y ai une fonction duplicate, mais c'est dans quel but que tu en as besoin? Pourquoi tu veux dupliquer tes données?


Reply

Marsh Posté le 09-06-2005 à 08:33:58    

hdh a écrit :

existe pas ??
=> snif
 
pourquoi ??
=> en fait à chaque inscription du nv membre je dois dupliquer certaines données (son profil par défaut) pour qu'il puisse les adapter comme bon lui semble par la suite. et je ne veux pas mettre en dure dans ma page un gros insert car je voudrais que cela soit dynamique...
 
=> tu ferais comment toi ???
euh.. au fait merci pr ta réponse ;)
 
a+


 
Tu as pas besoin de dupliquer les données, ou alors y'a un truc que je comprends pas?
 
Moi je ferais juste le insert des données lors de l'inscription et quand il veux modifier bah je fais un UPDATE, mais en aucun cas j'ai besoin de dupliquer les données.
J'y vois aucun interet....


---------------
!== Force et honneur ==!
Reply

Marsh Posté le 09-06-2005 à 08:37:29    

je vais y reflechir : je te tiens au courant !  
merci pr ton aide !
a+
H

cesarr89 a écrit :

J'y vois aucun interet....


Reply

Marsh Posté le 09-06-2005 à 08:40:43    

Ok.
Bah de rien.


---------------
!== Force et honneur ==!
Reply

Marsh Posté le 09-06-2005 à 09:27:51    

Moi j'en ai eu besoin donc voila du code homebrew:
 

Code :
  1. function DuplicateLine($db,$tab,$id_tab,$id)
  2. {
  3.  $sqlmaxId="SELECT max($id_tab)+1 as newId FROM ".$tab;
  4.  echo $sqlmaxId."<BR>";
  5.  $sql="SELECT * FROM ".$tab." WHERE ".$id_tab."=".$id ;
  6.  echo $sql."<BR>";
  7.  $res=send_sql($db,$sqlmaxId);
  8.  $row=mysql_fetch_array($res);
  9.  $newId=$row['newId'];
  10.  $result=mysql_query($sql);
  11.  $row2=mysql_fetch_array($result);
  12.  $nb_champs=mysql_num_fields ($result);
  13.  $reqfinal="INSERT INTO $tab values(".$newId."";
  14.  for ($i=1;$i< $nb_champs ; $i++)
  15.   {
  16.   $reqfinal.=",'".$row2[$i]."'";
  17.   }
  18.  $reqfinal.=" )";
  19.  echo $reqfinal."<BR>";
  20.  $res=send_sql($db,$reqfinal);
  21. }


send_sql c'est au fait un mysql_query ;)
$tab->nom de ta table
$id_tab->champ Id de la table
$id-> numero de l'id de la lige a dupliquer
 
J'espere que ca t'aidera ;)

Reply

Marsh Posté le 09-06-2005 à 10:20:44    

J'ai pas trop le tps tt de suite.. mais je regarde ca azap !
Grand merci pr ton aide : je te tiens au courant !
a+
H
 

PETOZAK a écrit :

Moi j'en ai eu besoin donc voila du code homebrew:
 
J'espere que ca t'aidera ;)


Reply

Marsh Posté le 09-06-2005 à 10:34:20    

et quelque chose comme cela, c'est pas mieux ?  
 

Code :
  1. insert into topics values (default, 'American History', (select topic_id from topics where topic_name = 'History') );


Message édité par titione le 09-06-2005 à 10:34:32
Reply

Marsh Posté le 09-06-2005 à 11:19:56    

olallallallala !!  
... et le public s'enflamme !! c'est l'euphorie !!  
à qui la requete la plus courte ?? qui dit mieux ?????
 
si ca marche c'est top : je regarde tout à l'heure !!
 
gd merci !
 
a+
 
H
 :bounce:  
 

titione a écrit :

et quelque chose comme cela, c'est pas mieux ?  
 

Code :
  1. insert into topics values (default, 'American History', (select topic_id from topics where topic_name = 'History') );



Reply

Marsh Posté le 09-06-2005 à 11:19:56   

Reply

Marsh Posté le 09-06-2005 à 11:42:57    

wé je pensais a un truc de ce genre en SQL, qui m'avait aidé pour faire de l'archivage de données (donc duplication puis suppression):
si la table de destination a exactement la meme structure que la table source :
 
INSERT INTO table_destination SELECT * FROM table_source
WHERE <ma_condition>

Reply

Marsh Posté le 12-06-2005 à 09:36:07    

Hello,  
 
ca marche.... ;-)  
...en partie ;-(
 
suite à un id autoincrement unique je suis obligé de faire une big magouille du style :  
- je duplique certaines lignes de la table existante (div_type) dans une table ou le id n'est plus autoincremet ni unique
- j'impose une nouvelle valeur à type_mbr (cad à l'identifiant du membre)
- j'envoie le contenu de cette table dans la table de base
- j'efface la table temporaire  
 
euh.. y aurait pas plus simple par zazard ???????
 
d'avance merci pour votre aide !!
 
H
 
 
 ce qui donne :  
 
DROP TABLE IF EXISTS div_type_tmp;
CREATE TABLE div_type_tmp (
  id varchar(6) NOT NULL default '',
  type_id varchar(5) NOT NULL default '',
  type_nom varchar(80) NOT NULL default '0',
  type_type int(12) NOT NULL default '0',
  type_km_mois varchar(12) NOT NULL default '',
  type_km_entre int(12) NOT NULL default '0',
  type_km_att_1000 int(12) NOT NULL default '0',
  type_km_att_6000 int(12) NOT NULL default '0',
  type_km_att_12000 int(12) NOT NULL default '0',
  type_mbr varchar(5) NOT NULL default ''
) TYPE=MyISAM;
 
 
INSERT INTO `div_type_tmp` SELECT * FROM `div_type` where type_mbr = '0';
update div_type_tmp set type_mbr = '9';
INSERT INTO `div_type` SELECT * FROM `div_type_tmp`;
DROP TABLE IF EXISTS div_type_tmp;
 
 
 
sachant que ma table de base est  
CREATE TABLE div_type (
  id int(6) NOT NULL auto_increment,
  type_id varchar(5) NOT NULL default '',
  type_nom varchar(80) NOT NULL default '0',
  type_type int(12) NOT NULL default '0',
  type_km_mois varchar(12) NOT NULL default '',
  type_km_entre int(12) NOT NULL default '0',
  type_km_att_1000 int(12) NOT NULL default '0',
  type_km_att_6000 int(12) NOT NULL default '0',
  type_km_att_12000 int(12) NOT NULL default '0',
  type_mbr varchar(5) NOT NULL default '',
  UNIQUE KEY type_id (id)
) TYPE=MyISAM;
 
 
 
 
 

titione a écrit :

et quelque chose comme cela, c'est pas mieux ?  
 

Code :
  1. insert into topics values (default, 'American History', (select topic_id from topics where topic_name = 'History') );



Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed