Copier table vers autre table
Résolu/Fermé
t671
Messages postés
1459
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
19 novembre 2024
-
2 nov. 2012 à 17:48
t671 Messages postés 1459 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 19 novembre 2024 - 3 nov. 2012 à 19:06
t671 Messages postés 1459 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 19 novembre 2024 - 3 nov. 2012 à 19:06
A voir également:
- Copier table vers autre table
- Table ascii - Guide
- Table des matières word - Guide
- Copier une vidéo youtube - Guide
- Table des caractères - Guide
- Table des annexes ✓ - Forum Word
11 réponses
t671
Messages postés
1459
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
19 novembre 2024
11
Modifié par t671 le 2/11/2012 à 18:22
Modifié par t671 le 2/11/2012 à 18:22
J'ai fait ça :
En fait, j'ai une table dont un enregistrement est composé par l'id, num_indiv, num_cj_1,num_cj_2,num_cj3,..............
Je veux recopier une partie de cette table dans une autre table dont un enregistrement est composé par l'id, num_indiv, num_cj. Si pour un enregistrement de la table1 existe et/ou num_cj_2 et/ou num_cj_3, je crée dans la table 2 le même num_indiv pour num_cj=num_cj_1, num_cj=num_cj_2, num_cj=num_cj_3. J'aurais donc 3 fois le même enregistrement num_cj.
Si j'écris :
j'ai l'erreur : Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in sur la ligne du while.
Pourquoi ?
$req0 = "INSERT INTO mariage_ville (num_indiv,nom,prenom,sexe,num_cj,date_mariage,lieu_mariage,num_pere,num_mere) VALUES ('$num_indiv','$nom','$prenom','$sexe','$num_cj_1','$date_mariage_1','$lieu_mariage_1','$num_pere','$num_mere')"; $result0 = mysql_query($req0,$link) or die ('Erreur : '.mysql_error() );
En fait, j'ai une table dont un enregistrement est composé par l'id, num_indiv, num_cj_1,num_cj_2,num_cj3,..............
Je veux recopier une partie de cette table dans une autre table dont un enregistrement est composé par l'id, num_indiv, num_cj. Si pour un enregistrement de la table1 existe et/ou num_cj_2 et/ou num_cj_3, je crée dans la table 2 le même num_indiv pour num_cj=num_cj_1, num_cj=num_cj_2, num_cj=num_cj_3. J'aurais donc 3 fois le même enregistrement num_cj.
Si j'écris :
$select = 'SELECT * FROM ville_bis'; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); while ($row = mysql_fetch_array($result)) { if (!empty($row['num_cj_2'])) { $req = 'INSERT INTO mariage_ville (num_indiv,num_cj,date_mariage,lieu_mariage) VALUES ("'.$row['num_indiv'].'","'.$row['num_cj_2'].'","'.$row['date_mariage_2'].'","'.$row['lieu_mariage_2'].'")'; $result = mysql_query($req,$link) or die ('Erreur : '.mysql_error() ); } }
j'ai l'erreur : Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in sur la ligne du while.
Pourquoi ?
-utiliise plutot mysql_fetch_assoc au lieu de mysql_fetch_array
-met des addslashes dans tes valeurs insérées :
("'.addslashes($row['num_indiv']).'","'.addslashes($row['num_cj_2']).'","'.addslashes($row['date_mariage_2']).'","'.addslashes($row['lieu_mariage_2']).'")';
-met des addslashes dans tes valeurs insérées :
("'.addslashes($row['num_indiv']).'","'.addslashes($row['num_cj_2']).'","'.addslashes($row['date_mariage_2']).'","'.addslashes($row['lieu_mariage_2']).'")';
t671
Messages postés
1459
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
19 novembre 2024
11
2 nov. 2012 à 18:32
2 nov. 2012 à 18:32
J'ai le même message d'erreur :
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource sur la ligne du while ......
:(
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource sur la ligne du while ......
:(
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
$link est égal à quoi, car le message d'erreur nous dit que $link ne vaut rien (pas de ressources)
t671
Messages postés
1459
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
19 novembre 2024
11
2 nov. 2012 à 20:44
2 nov. 2012 à 20:44
je comprends pas ce que tu dis ???????
t671
Messages postés
1459
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
19 novembre 2024
11
3 nov. 2012 à 16:32
3 nov. 2012 à 16:32
Si, bien sûr que je le vois ! Mais je ne me suis jamais posé la question "à quoi il sert?" ......
Nhay
Messages postés
838
Date d'inscription
vendredi 2 novembre 2012
Statut
Membre
Dernière intervention
17 décembre 2015
126
3 nov. 2012 à 16:37
3 nov. 2012 à 16:37
$link est censé représenter ta connexion mysql à la base de donnée.
Si tu n'est pas connecté, pas étonnant que rien ne fonctionne :D
Si tu n'est pas connecté, pas étonnant que rien ne fonctionne :D
t671
Messages postés
1459
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
19 novembre 2024
11
3 nov. 2012 à 16:58
3 nov. 2012 à 16:58
Pourtant, voilà mon script :
qui m'affiche l'erreur Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource sur le while.
--------------------------------------------------------------------------------------------
J'ai un 2° script, mais si un champ comporte une apostrophe, j'ai l'erreur Erreur : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
Si j'arrivais à résoudre ce problème d'apostrophe, ce code fonctionnerait peut-être un peu mieux !?
$host = 'localhost'; $user = 'xxx'; $pass = 'xxx'; $db = 'base'; $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); mysql_select_db($db) or die ('Erreur :'.mysql_error()); $select = 'SELECT * FROM table'; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); while ($row = mysql_fetch_assoc($result)) { if (!empty($row['num_cj_2'])) { $req = 'INSERT INTO mariage_ville (num_indiv,num_cj,date_mariage,lieu_mariage) VALUES ("'.addslashes($row['num_indiv']).'","'.addslashes($row['num_cj_2']).'","'.addslashes($row['date_mariage_2']).'","'.addslashes($row['lieu_mariage_2']).'")'; $result = mysql_query($req,$link) or die ('Erreur : '.mysql_error() ); } }
qui m'affiche l'erreur Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource sur le while.
--------------------------------------------------------------------------------------------
J'ai un 2° script, mais si un champ comporte une apostrophe, j'ai l'erreur Erreur : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
$select = "SELECT num_indiv,num_cj_1,date_mariage_1,lieu_mariage_1 FROM ville_bis"; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); while ($row = mysql_fetch_array($result)) { $num_indiv = $row['num_indiv']; $num_cj_1 = $row['num_cj_1']; $date_mariage_1 = $row['date_mariage_1']; $lieu_mariage_1 = $row['lieu_mariage_1']; $req0 = "INSERT INTO mariage_ville (num_indiv,num_cj,date_mariage,lieu_mariage) VALUES ('$num_indiv','$num_cj_1','$date_mariage_1','$lieu_mariage_1')"; $result0 = mysql_query($req0,$link) or die ('Erreur : '.mysql_error() ); }
Si j'arrivais à résoudre ce problème d'apostrophe, ce code fonctionnerait peut-être un peu mieux !?
Nhay
Messages postés
838
Date d'inscription
vendredi 2 novembre 2012
Statut
Membre
Dernière intervention
17 décembre 2015
126
3 nov. 2012 à 17:04
3 nov. 2012 à 17:04
Pour ton deuxième script il suffit d'échapper tes variable grâce à la fonction mysql_real_escape_string.
t671
Messages postés
1459
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
19 novembre 2024
11
3 nov. 2012 à 17:21
3 nov. 2012 à 17:21
Merci Nhay ! Ca fonctionne mieux .................
Mais reste un problème qui subsiste : ma base doit être trop importante.
J'ai le message Fatal error: Maximum execution time of 30 seconds exceeded.
Sur 45000 enregistrements, il m'en a copié 38000.
Y a t'il possibilité de dépasser le délai de 30s ?
Mais reste un problème qui subsiste : ma base doit être trop importante.
J'ai le message Fatal error: Maximum execution time of 30 seconds exceeded.
Sur 45000 enregistrements, il m'en a copié 38000.
Y a t'il possibilité de dépasser le délai de 30s ?
Nhay
Messages postés
838
Date d'inscription
vendredi 2 novembre 2012
Statut
Membre
Dernière intervention
17 décembre 2015
126
3 nov. 2012 à 17:24
3 nov. 2012 à 17:24
Ta table doit bien avoir un id, fais le plutôt en deux fois en utilisant la clause WHERE, ça sera largement plus simple :)
t671
Messages postés
1459
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
19 novembre 2024
11
3 nov. 2012 à 18:31
3 nov. 2012 à 18:31
Effectivement, j'y avais pas pensé. Et là, ça fonctionne !
Pour corser un peu la chose, si dans ma première table1 un enregistrement num_indiv comporte plusieurs num_cj (num_cj_1, num_cj_2, num_cj_3, num_cj_4),
je veux à chaque fois créer dans ma table2 un enregistrement avec le même num_indiv pour chaque num_cj.
Et là, j'ai le message d'erreur qui revient : Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource sur le while. A noter que le 1° num_indiv a été traité correctement avec ses trois num_cj (quelle chance il a) !
Pour corser un peu la chose, si dans ma première table1 un enregistrement num_indiv comporte plusieurs num_cj (num_cj_1, num_cj_2, num_cj_3, num_cj_4),
je veux à chaque fois créer dans ma table2 un enregistrement avec le même num_indiv pour chaque num_cj.
Et là, j'ai le message d'erreur qui revient : Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource sur le while. A noter que le 1° num_indiv a été traité correctement avec ses trois num_cj (quelle chance il a) !
$select = "SELECT num_indiv,num_cj_1,date_mariage_1,lieu_mariage_1,num_cj_2,date_mariage_2,lieu_mariage_2,num_cj_3,date_mariage_3,lieu_mariage_3,num_cj_4,date_mariage_4,lieu_mariage_4 FROM ville_bis WHERE id < 2300"; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); while ($row = mysql_fetch_array($result)) { $num_indiv = $row['num_indiv']; $num_cj_1 = $row['num_cj_1']; $date_mariage_1 = $row['date_mariage_1']; $lieu_mariage_1 = mysql_real_escape_string($row['lieu_mariage_1']); $req0 = "INSERT INTO mariage_ville (num_indiv,num_cj,date_mariage,lieu_mariage) VALUES ('$num_indiv','$num_cj_1','$date_mariage_1','$lieu_mariage_1')"; $result0 = mysql_query($req0,$link) or die ('Erreur : '.mysql_error() ); if (!empty($row['num_cj_2'])) { $num_indiv = $row['num_indiv']; $num_cj_2 = $row['num_cj_2']; $date_mariage_2 = $row['date_mariage_2']; $lieu_mariage_2 = $row['lieu_mariage_2']; $req = "INSERT INTO mariage_ville (num_indiv,num_cj,date_mariage,lieu_mariage) VALUES ('$num_indiv','$num_cj_2','$date_mariage_2','$lieu_mariage_2') "; $result = mysql_query($req,$link) or die ('Erreur : '.mysql_error() ); } if (!empty($row['num_cj_3'])) { $num_indiv = $row['num_indiv']; $num_cj_3 = $row['num_cj_3']; $date_mariage_3 = $row['date_mariage_3']; $lieu_mariage_3 = $row['lieu_mariage_3']; $req1 = "INSERT INTO mariage_ville (num_indiv,num_cj,date_mariage,lieu_mariage) VALUES ('$num_indiv','$num_cj_3','$date_mariage_3','$lieu_mariage_3') "; $result1 = mysql_query($req1,$link) or die ('Erreur : '.mysql_error() ); } if (!empty($row['num_cj_4'])) { $num_indiv = $row['num_indiv']; $num_cj_4 = $row['num_cj_4']; $date_mariage_4 = $row['date_mariage_4']; $lieu_mariage_4 = $row['lieu_mariage_4']; $req2 = "INSERT INTO mariage_ville (num_indiv,num_cj,date_mariage,lieu_mariage) VALUES ('$num_indiv','$num_cj_4','$date_mariage_4','$lieu_mariage_4') "; $result2 = mysql_query($req2,$link) or die ('Erreur : '.mysql_error() ); } }
t671
Messages postés
1459
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
19 novembre 2024
11
3 nov. 2012 à 19:06
3 nov. 2012 à 19:06
J'ai trouvé ...... je traite dabord num_cj_1, puis num_cj_2 ........ ;o))
Merci pour le coup d'main !
Merci pour le coup d'main !