Page 1 sur 1
dupliquer une ligne d'une table mysql
Posté : 21 janv. 2007, 20:35
par HD
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 !
Posté : 21 janv. 2007, 20:50
par Truc
Avec une requête INSERT ... SELECT
=> google ou forum question déjà abordée
Posté : 21 janv. 2007, 20:56
par HD
si tu crois que j'ai pas cherché ! c'est comme je ne trouve pas que je poste ici...
Posté : 21 janv. 2007, 21:33
par zeus
Justement,
Truc te donnait la syntaxe à utiliser :
Il te conseillait ensuite de chercher cette syntaxe sur google ou dans le forum
http://www.google.fr/search?q=MySQL+ins ... =firefox-a
Posté : 21 janv. 2007, 22:08
par Truc
J'ai oublié le lien vers google ?
Ni plus ni moins que zeus
Je ne pensais pas qu'il t'en faudrait plus.
Posté : 22 janv. 2007, 00:09
par zeus
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

Posté : 22 janv. 2007, 01:37
par Ajoloca
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
Posté : 22 janv. 2007, 13:59
par HD
$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
Posté : 22 janv. 2007, 15:08
par zeus
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 
Posté : 22 janv. 2007, 15:22
par HD
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 
désolé de te décevoir mais
Warning: mysql_affected_rows(): supplied resource is not a valid MySQL-Link resource

Posté : 22 janv. 2007, 15:24
par HD
oula zeus t as pas remarqué que
$res2 = mysql_num_rows($res);
n'a pas lieu d'être !!!

Posté : 22 janv. 2007, 15:25
par Jules Petibidon
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.
Posté : 22 janv. 2007, 15:30
par zeus
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
De plus, comme le dit très justement
Jules, ce n'est pas le résultat de la requête qu'il faut passer

Posté : 22 janv. 2007, 15:32
par HD
en tous cas avec mysql_num_rows

(l'autre bug) et en supprimant cette ligne ca marche parfaitement
merci à tous !