Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/02/2011, 15h06   #1
Candidat au titre de Membre du Club
 
Inscription : février 2009
Messages : 38
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 38
Points : 11
Points : 11
Par défaut Importer xml BDD

Bonjour à tous !

Je suis en train d'importer un fichier xml dans ma base de données, cependant je coince au niveau des balises imbriquées .

Exemple :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
<AFF_ID>1961612</AFF_ID>
<INTITULE>
  <FR>Maison de ville Marseille 6 pièces 300 m2 Avec Terrasse 35m² Et Garage 80m²</FR> 
  <US>Townhouse Marseille 6 rooms 300 m2 terrace with 32m ² and 80m ² Garage</US> 
</INTITULE>
<COMMENTAIRES>
  <FR>[Référence 1350] 13003-BELLE DE MAI: A Proximité De Toutes Commodités Commerces Et Transports. Maison De Ville T6 Duplex De 300m², Grand Séjour, 4 Chambres, 2 sdb, 3 WC, Cuisine Américaine Équipée, Terrasse 32m², Garage 80m², Combles Aménagées
  </FR> 
  <US>[Reference 1350] 13 003-BELLE DE MAI: A Close To All Amenities Shops And Transport. Town house T6 Duplex From 300m ² Great Room, 4 Bedrooms, 2 bathrooms, 3 toilets, equipped kitchen, terrace 32m ², garage 80m ², attic furnished. 
  </US> 
 </COMMENTAIRES>
Comment puis je differencier les balises <FR> de INTITULE et COMMENTAIRES :

Code :
eregi("<AFF_ID>(.*)</AFF_ID>",$items[$i+1], $AFF_ID);
ceci fonctionne pour l'identifians mais pour FR de COMMENTAIRES j'ai essayé ceci sans resultat :

Code :
eregi("<COMMENTAIRES><FR>(.*)</FR></COMMENTAIRES>",$items[$i+1], $FR);

Auriez-vous une idée svp .
cmoi70 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 15h15   #2
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
oui
  • tu laisses tomber les eregi() qui sont dépréciées (tu feras des PRCE la prochaine fois)
  • tu est heureux parce que tu as du xml
  • tu utilises ton xml comme du xml et pas comme du vulgaire texte avec http://us2.php.net/manual/fr/book.simplexml.php
  • tu reviens poser des questions si tu n'arrives pas à mettre en oeuvre la librairie.
  • tu utilises quand c'est fini.
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/02/2011, 15h47   #3
Candidat au titre de Membre du Club
 
Inscription : février 2009
Messages : 38
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 38
Points : 11
Points : 11
Merci pour votre réponse, cependant il faudrait l'intégrer pour cet après midi et je n'ai pas le temps pour réécrire le script, je sais que ce n'est pas propre mais vu l'urgence je me contenterai aujourd'hui pour la méthode bourrin. Aurais-tu une idée sur la manière de différencier les <FR> car quand je fais

Code :
eregi("<FR>(.*)</FR>",$items[$i+1], $FR);
J'ai cela comme résultat :

Code :
1
2
3
4
5
Maison de ville Marseille 6 pièces 300 m2 Avec Terrasse 35m² Et Garage 80m²</FR> 
  <US>Townhouse Marseille 6 rooms 300 m2 terrace with 32m ² and 80m ² Garage</US> 
</INTITULE>
<COMMENTAIRES>
  <FR>[Référence 1350] 13003-BELLE DE MAI: A Proximité De Toutes Commodités Commerces Et Transports. Maison De Ville T6 Duplex De 300m², Grand Séjour, 4 Chambres, 2 sdb, 3 WC, Cuisine Américaine Équipée, Terrasse 32m², Garage 80m², Combles Aménagées
cmoi70 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 16h02   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
Citation:
Envoyé par cmoi70 Voir le message
Merci pour votre réponse, cependant il faudrait l'intégrer pour cet après midi et je n'ai pas le temps pour réécrire le script, je sais que ce n'est pas propre mais vu l'urgence je me contenterai aujourd'hui pour la méthode bourrin. Aurais-tu une idée sur la manière de différencier les <FR> car quand je fais

Code :
eregi("<FR>(.*)</FR>",$items[$i+1], $FR);
J'ai cela comme résultat :

Code :
1
2
3
4
5
Maison de ville Marseille 6 pièces 300 m2 Avec Terrasse 35m² Et Garage 80m²</FR> 
  <US>Townhouse Marseille 6 rooms 300 m2 terrace with 32m ² and 80m ² Garage</US> 
</INTITULE>
<COMMENTAIRES>
  <FR>[Référence 1350] 13003-BELLE DE MAI: A Proximité De Toutes Commodités Commerces Et Transports. Maison De Ville T6 Duplex De 300m², Grand Séjour, 4 Chambres, 2 sdb, 3 WC, Cuisine Américaine Équipée, Terrasse 32m², Garage 80m², Combles Aménagées
t'inquiète pas fais comme te dit gene69, et ca ira beaucoup plus vite que de corriger tes bidouilles
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 19h44   #5
Candidat au titre de Membre du Club
 
Inscription : février 2009
Messages : 38
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 38
Points : 11
Points : 11
Re,

alors j'ai viré le ergi qui est déprécié et ça me donne par rapport à mon exemple .

Code :
preg_match("#<AFF_ID>(.*)</AFF_ID>#s",$items[$i+1], $AFF_ID);
et

Code :
preg_match("#<COMMENTAIRES><FR>(.*)</FR></COMMENTAIRES>#s",$items[$i+1], $FR);
qui ne me retourne toujours rien, $FR est vide

quelle serait l'astuce

La library libxml ( je suppose que c'est de cela dont il s'agit ) est installée par defaut je pense, dans php version 5.3.3 en configuration il est ecrit
libxml Version 2.7.7
cmoi70 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 22h05   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
Citation:
Envoyé par cmoi70 Voir le message
quelle serait l'astuce
http://www.developpez.net/forums/d10...d/#post5762480
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 18h42   #7
Candidat au titre de Membre du Club
 
Inscription : février 2009
Messages : 38
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 38
Points : 11
Points : 11
Bonsoir,

Alors, après avoir revu mon script j'ai réglé le problème de <FR> :

Code :
1
2
3
4
5
6
7
8
9
10
11
<AFF_ID>1961612</AFF_ID>
<INTITULE>
  <FR>Maison de ville Marseille 6 pièces 300 m2 Avec Terrasse 35m² Et Garage 80m²</FR> 
  <US>Townhouse Marseille 6 rooms 300 m2 terrace with 32m ² and 80m ² Garage</US> 
</INTITULE>
<COMMENTAIRES>
  <FR>[Référence 1350] 13003-BELLE DE MAI: A Proximité De Toutes Commodités Commerces Et Transports. Maison De Ville T6 Duplex De 300m², Grand Séjour, 4 Chambres, 2 sdb, 3 WC, Cuisine Américaine Équipée, Terrasse 32m², Garage 80m², Combles Aménagées
  </FR> 
  <US>[Reference 1350] 13 003-BELLE DE MAI: A Close To All Amenities Shops And Transport. Town house T6 Duplex From 300m ² Great Room, 4 Bedrooms, 2 bathrooms, 3 toilets, equipped kitchen, terrace 32m ², garage 80m ², attic furnished. 
  </US> 
 </COMMENTAIRES>
Code :
$FR = $raw->BIEN[$i]->COMMENTAIRES->FR;
Cependant un problème subsiste , dans :

Code :
1
2
3
4
- <IMAGES>
  <IMG>/catalog/images/pr_p/2/9/3/1/7/8/6/2931786a.jpg</IMG> 
  <IMG>/catalog/images/pr_p/2/9/3/1/7/8/6/2931786b.jpg</IMG> 
  </IMAGES>
Comment différencier les <IMG>

ceci :
Code :
$IMG = $raw->BIEN[$i]->IMAGES->IMG;
me ressort le premier <IMG>

et pour essayer de sortir le 2ème <IMG> j'ai tenté :

Code :
$IMG = $raw->BIEN[$i]->IMAGES->IMG->IMG;
en vain, quelqu'un aurait une idée svp
cmoi70 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h02.


 
 
 
 
Partenaires

Hébergement Web