HELP : j'aimerai utiliser un flux xml pour une maj de bdd

  • Auteur de la discussion Auteur de la discussion oli004
  • Date de début Date de début
WRInaute passionné
Bonjour tout le monde,

Sur un de mes sites, je diffuse les produits d'un fabriquant. Ces produits sont disponibles via un flux xml ou via un csv.

pour commencer, j'ai utilisé le csv, que j'ai envoyé en base, puis j'affiche les données par catégories en triant ce que je veux dans ma base.

pour le moment, pas de soucis ça fonctionne exactement comme je le souhaite.

Néanmoins, se pose le problème de la mise à jour des produits. Pour remedier à ce problème, je devrai partir non pas du csv mais du fichier xml.

Là je coince un peu.

Je saurais programmer une tache CRON pour télécharger quotidienement le catalogue xml et executer le script de mise a jour de la bdd, mais je sèche concernant le passage de du xml en base de données

Je ne vous demande pas de me faire le script mais si vous avez des exemple d'applications ou un flux xml est injecté en base, je suis preneur.

merci d'avance.
 
WRInaute passionné
Hello,

que le flux soit en XML ou en CSV ne change pas grand chose au traitement normalement.

Si le catalogue n'est pas trop gros (quelques Mo maxi), utilise SimpleXML : un foreach sur les items dont tu as besoin et c'est parti.
 
WRInaute passionné
Effectivement, mais à la veille de la sortie de PHP 6 il faudrait peut être songer à migrer :P
 
WRInaute accro
une idée sans trop connaître la structure de ton flux

Code:
	preg_match_all("/<item>.{100,1000}</item>/",$xml_string, $matches);
	foreach($matches as $item) {
		(... traitement d'un article/item...)
	}

Dans la traitement de l'article, quelques regex peuvent facilement créer un requette SQL a partir du morceau de flux extrait par le preg_match all.
Il suffit ensuite d'injecter la dite requette dans la base.
Nota attention aux doublons a la sortie, une petite vérification est peut être nécessaire avant de passer la requette.
 
Discussions similaires
Haut