dupliquer une ligne d'une table mysql

HD
Mammouth du PHP | 1181 Messages

21 janv. 2007, 20:35

salut
j'ai une table mysql qui contient un "produit1" et toutes ses caractéristiques (une 30aine de champs)
sachant que le 1er champs : "id" est en auto_increment
je voudrais créer, dans la même table, un "produit2" qui reprend exactement les mêmes valeurs pour tous les champs ; sauf bien sûr pour id qui doit etre id+1 (auto increment !)
y a t il un code simple pour faire cela, plutot de faire insert into ... champs 1, champs 2...
merci d'avance !
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

21 janv. 2007, 20:50

Avec une requête INSERT ... SELECT
=> google ou forum question déjà abordée

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

HD
Mammouth du PHP | 1181 Messages

21 janv. 2007, 20:56

si tu crois que j'ai pas cherché ! c'est comme je ne trouve pas que je poste ici...
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

21 janv. 2007, 21:33

Justement, Truc te donnait la syntaxe à utiliser :

Code : Tout sélectionner

INSERT ... SELECT
Il te conseillait ensuite de chercher cette syntaxe sur google ou dans le forum ;)
http://www.google.fr/search?q=MySQL+ins ... =firefox-a
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

21 janv. 2007, 22:08

J'ai oublié le lien vers google ? :lol:
Ni plus ni moins que zeus :)
Je ne pensais pas qu'il t'en faudrait plus.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

22 janv. 2007, 00:09

Disons que la lecture en diagonale a quelques conséquences imprévues.
Comme celle de rater des informations importantes. ;)

Je sais de quoi je parle 8-|
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
ViPHP | 1961 Messages

22 janv. 2007, 01:37

Bonsoir,
je voudrais créer, dans la même table, un "produit2" qui reprend exactement les mêmes valeurs pour tous les champs ;
Si je comprends bien, tu veux dupliquer tes informations dans la même table.

Bien que je ne comprenne pas l'intérêt pourquoi ne pas exécuter la requête deux fois ???.
La seule précaution à prendre est de donner la valeur null à la colonne AUTO_INCREMENT
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

HD
Mammouth du PHP | 1181 Messages

22 janv. 2007, 13:59

					$verif = "INSERT INTO articles (ART_REF,ART_FOURNI,ART_RUBR_DEFAUT)
					SELECT ART_REF,ART_FOURNI,ART_RUBR_DEFAUT
					FROM articles WHERE ART_REF='$ref'";
$res = mysql_query($verif) or die($verif.' '.mysql_error());
$res2 = mysql_num_rows($res);
affiche l'erreur :
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource
vous remarquez que je n'ai pas sélectionné le champs "id" qui est en auto increment
solution ? merci d'avance
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

22 janv. 2007, 15:08

Dans la doc de mysql_num_rows(), il est marqué
Pour récupérer le nombre de lignes affectées par une requête INSERT, UPDATE, REPLACE ou DELETE, utilisez la fonction mysql_affected_rows().
Tu m'étonnes HD, tu m'avais habitué à ne pas faire ce genre d'oubli ;)
NB : c'est une taquinerie légère pas une critique méchante :lol:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

HD
Mammouth du PHP | 1181 Messages

22 janv. 2007, 15:22

Dans la doc de mysql_num_rows(), il est marqué
Pour récupérer le nombre de lignes affectées par une requête INSERT, UPDATE, REPLACE ou DELETE, utilisez la fonction mysql_affected_rows().
Tu m'étonnes HD, tu m'avais habitué à ne pas faire ce genre d'oubli ;)
NB : c'est une taquinerie légère pas une critique méchante :lol:
désolé de te décevoir mais
Warning: mysql_affected_rows(): supplied resource is not a valid MySQL-Link resource

:(
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

HD
Mammouth du PHP | 1181 Messages

22 janv. 2007, 15:24

oula zeus t as pas remarqué que
$res2 = mysql_num_rows($res); 
n'a pas lieu d'être !!! :lol: :wink:
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Eléphant du PHP | 259 Messages

22 janv. 2007, 15:25

hello,

lorsque la requete est de type insert ou update, mysql_query renvoie un booleen et non une ressource...

donc premierement tu peux tester $res pour savoir si la requete a été effectuée, ensuite ton mysql_affected_rows doit recevoir ta ressource de connexion pour donner un résultat.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

22 janv. 2007, 15:30

Non seulement, j'avais bien détecté que ce n'était pas mysql_num_rows() qu'il fallait utiliser mais mysql_affected_rows(), mais en plus, il est vraiq ue dans ton cas, avec un INSERT simple, cette ligne n'a pas trop d'influence :-k

De plus, comme le dit très justement Jules, ce n'est pas le résultat de la requête qu'il faut passer ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

HD
Mammouth du PHP | 1181 Messages

22 janv. 2007, 15:32

en tous cas avec mysql_num_rows :pouce: (l'autre bug) et en supprimant cette ligne ca marche parfaitement
merci à tous !
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]