PHP : gestion fichiers xml

Eléphanteau du PHP | 14 Messages

22 févr. 2013, 12:07

pour moi un attribut c'est id par exemple .
ok je vais essayer ta méthode voir si par :

Code : Tout sélectionner

<database name="testXml"> <!-- Table ancienne --> <table name="ancienne"> <column name="id">1</column> <column name="nom">bob</column> </table>
ce copie bien dans la nouvelle base .
mais pour mon fichier qui est bcp plus gros et où il y a beaucoup plus d'attributs comment je peux faire alors pour transférer ? je fait pareil ?

Eléphanteau du PHP | 14 Messages

22 févr. 2013, 12:19

j'ai entré cette commande dans PhpMyAdmin et ça ne marche pas ..
UPDATE nouvelle SET nouvelle.nouv_id = ancienne.id 
pourtant ma syntaxe est bonne fin du moins je pense #-o

Mammouth du PHP | 504 Messages

22 févr. 2013, 12:53

Mauvaise requete

la bonne
INSERT INTO table_nouvelle (id) SELECT id FROM table_ancienne
Attention dans tes requetes furures, n'oublie pas de correler tes infos. Pense au WHERE

Eléphanteau du PHP | 14 Messages

22 févr. 2013, 12:57

je suis complètement perdu .... :oops: :oops:
je ne veux pas faire de requête dans phpMyAdmin je veux utiliser les XML qui lit mon ancien fichier et créer un nouveau fichier xml que j'importe à ma base

Mammouth du PHP | 504 Messages

22 févr. 2013, 13:19

regarde ce topic, c'est pareil. exactement la meme chose.

php-debutant/xml-classer-dans-ordre-t267225.html
Regarde cette discussion tout est noté pour le parsing du xml avec exemples.

Tu comprendra comment utilisé simple_xml et tu pourras récupérer ce que tu veux dans ton xml.

Eléphanteau du PHP | 14 Messages

22 févr. 2013, 13:32

ok merci , et une fois que mon code je l'ai je met l'extension en .xml et j'importe directement c'est bon ?

Mammouth du PHP | 504 Messages

22 févr. 2013, 13:42

bah non!?

tu recupères tes variables et fait un insert into vers ta nouvelle base.

Eléphanteau du PHP | 14 Messages

22 févr. 2013, 14:01

alors dans ce cas la ce n'est pas la peine de faire un script php ..

Mammouth du PHP | 504 Messages

22 févr. 2013, 14:06

Je ne saisis pas exactement ce que tu veux faire.

- Par phpmyadmin, ça ne va pas.
- Parser le xml en php et inclure les valeus dans ta base, ça ne va pas non plus.
- Sqldump, non plus.

Tu veux lire et parser le xml et refaire un xml derriere pour l'importer dans ta base.

Je vois pas pourquoi te rajouter un étape alors que inclure dans ta base, c'est juste une ligne en plus.

Bizarre... M'enfin

Eléphanteau du PHP | 14 Messages

22 févr. 2013, 14:12

pour l'linstant j'ai ça :
<?php
$xml = simplexml_load_file('ancienne.xml');

foreach ($xml ->ancienne as $value) {
$nouv_id= $value->ancienne;
$nouv_name = $value->ancienne;
}
?>
une fois que je l'ai tu veux que je fasse un insert dans ma nouvelle table c'est ça ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

23 févr. 2013, 01:01

salut,

commence par définir l'algorithme qui va ce que tu veux faire.

1/ ouvrir le fichier xml
2/ pour chaque élément table faire
2.1/pour chaque élément column faire
2.1.1/ajouter le "name" dans un tableau
2.1.2/ ajout la valeur dans un tableau (même index que 2.1.1)
2.1.3/ fin pour chaque (2.1)
2.2 / insérer dans la nouveau table les infos de la boucle précédente
2.3 / Fin pour chaque

tu as toutes les infos qui sont indiquées dans les messages précédents.

les tests c'est bien mais ce n'est pas une bonne idée ce type de dump sur une structure comportant beaucoup de données (la taille du fichier sera très lourde, le traitement sera plus long).
Il existe des utilitaire natif (comme mysqldump) ou simplement un fichier sql. Si les tables sont identiques bien sur.

Essai de faire quelque chose avec l'algo, c'est relativement simple. si tu as des soucis montre nous le code avec les éventuels messages d'erreurs ou les dysfonctionnements que tu constate.

@+
Il en faut peu pour être heureux ......