Version complète: sur le forum Webmaster Hub : mettre un flux xml dans une base de données
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > Scripts et utilitaires
marvine28
bonjour, j'ai un flux xml d'un catalogue de produits avec plus de 5000 entrés donc il faudrait les mettre dans une base de donné pour pouvoir ensuite les afficher, alors éxiste t-il des scripts pour les mettres dans une base et pourquoi pas les afficher (ça sauverait du temps biggrin.gif )

merci
MS-DOS_1991
Tu peux faire cela en PHP en utilisant un parseur XML et à l'aide d'une boucle en mettant chaque information dans ta base de données wink.gif
marvine28
ok mais il n'éxiste pas de truc qui le rentre au complet dans la base car 5000 entré jvais y passé une vie wink.gif
rportal
Salut,

En fait si ton flux XML suit un standard, fait une recherche sur ce standard pour voir les outils existants.

L'integration de ton flux va dependre de 2 parametres assez important:
1) le schema de ton flux XML (comment lire un produit?)
2) l'organisation de ta base de donnees (ou le mettre?)

Sans ces deux informations, il est probable que tu trouves un outil mais avec beaucoup de recherche.
Avec ces deux informations, il est probable que des personnes te proposent des scripts adaptés à ton cas... Dans ce cas: Quel langage peux tu ou veux tu utiliser pour ce script?
marvine28
bah voici le flux: http://xml.publicidees.net/xml.php?progid=...&prog=hotelclub

il est quand meme assé lourd (plus de 15 Mo. )

et je voudrais intégrer cela en php dans mon site.
MS-DOS_1991
la structure de ton xml est assez simple:
chaque produit est entouré des balises <produit></produit>
Puis on retrouve les informations entre balises:
HTML
<produit>
<id>1049</id>
<hotelname>Novotel Sydney On Darling Harbour</hotelname>
<rating>4</rating>
<lien>http%3A%2F%2Ftracking.publicidees.com%2Fclic.php%3Fpartid%3D3874%26progid%3D104%26adfactory_type%3D12%26ref_pdt%3D1049</lien>
<description>Le Novotel Sydney On Darling Harbour est situé à côté du centre de convention et d'exposition de Sydney avec une liaison directe et commode vers le centre des affaires (CBD) par l'intermédiaire du monorail. Parfaitement situé à quelques minutes des attractions les plus populaires de Sydney comme l'aquarium de Sydney, le musée (Powerhouse Museum) et Star City.</description>
<hotelinfo>Service de baby sitting, Centre d'affaires, Bar à cocktails, Salles de conférence, Chambres non fumeur, Parking (payant), Réception, Restaurant, Sauna, Piscine, Court de tennis</hotelinfo>
<roominfo>Climatisation, Sèche cheveux, Chauffage, Coffre fort dans la chambre, Fer et table à repasser, Minibar, Films à la carte, Radio, Réfrigérateur, Nécessaire pour thé et café, Téléphone, Télévision</roominfo>
<img>http%3A%2F%2Fwww.hotelclub.net%2Fenter.asp%3Fid%3D24616%26%2338%3Bru%3Ddirecthotel.asp%3Fid%3D9</img>
<prix>noprice</prix>
<currency>AUD </currency>
<city>Sydney</city>
<cityid>1</cityid>
<country>Australie</country>
<countryid>3</countryid>
</produit>


Tu pourrais donc faire un fichier php qui agirait de cette façon (le code est faux, c'est juste pour donner une idée):
CODE
// [...] Code pour sélectionner chaque groupe <produit>...</produit> [...]
foreach($balise_dans_produit AS $nom_balise => $contenu_balise) // Pour chaque balise (<id>, <city>, <country>...)
{
$$nom_balise = $contenu_balise; // on crée une variable du nom de la balise contenant le texte du xml
echo $$nom_balise;
}


... Mais je ne sais pas comment sélectionner tout le groupe entre <produit> et </produit> unsure.gif
rportal
il faut utiliser un parser XML pour parcourir l'arbre.
Par exemple celui de PEAR: http://pear.php.net/package/XML_Parser/

A priori le code doit etre relativement simple. Le seul point qui risque d'etre bloquant est que le fichier fait 15Mo donc je pense qu'il faudra utiliser un buffer pour le lire...
Anonymus
CITATION(marvine28 @ mercredi 01 mars 2006, 16h12)
ok mais il n'éxiste pas de truc qui le rentre au complet dans la base car 5000 entré jvais y passé une vie wink.gif
*

Tu vas y passer 2.5 secondes si tu script est codé normalement wink.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.