Page 1 sur 1

Intégrer un flux XML dans une bdd

Posté : 14 juin 2015, 00:59
par blinz
Bonjour,
Je recupere un flux XML que j'intègre dans ma base de donnée.
Aucun problème particulier je recupère ce que je souhaite cependant, j'aimerais récupérer uniquement certaine chose comme la ville qui dans la même balise que le code postal.

Exemple: ( extra 2 dans mon xml, permet de nous transmettre code postal, ville et pays.
Je souhaite récupérer que le code postal dans une variable, dans une autre variable que le ville et ainsi de suite... comment procéder svp.
<extra2>31200 | TOULOUSE | FR</extra2>
Mon code au complet :
<?php
//connection a la base de donnee
$dbhost = "localhost";
$dbuser = "root";      // mysql user
$dbpass = "";       // mysql password
$dbname = "test";     // mysql database
$conn=mysql_connect($dbhost,$dbuser,$dbpass) or die(erreurServeurMySQL());
mysql_select_db($dbname,$conn) or die('Erreur de selection '.mysql_error());
 
$flux = simplexml_load_file('http://localhost/csv/file.xml');
 
foreach ($flux->product as $item) {
 
   $titre = $item->titre;
   $price = $item->price;
   $url_fnac = $item->url;
   $date_debut_sortie = $item->date_debut;
   $date_fin_sortie = $item->date_fin;
  
   
 
   $sql = "INSERT INTO `matable` (titre,price,url,date_debut_sortie,date_fin_sortie) VALUES ('$titre','$price','$url','$date_debut_sortie','$date_fin')";
   $req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
   echo 'données inserées en base';
 
}

?>
Merci à vous ;)

Re: Intégrer un flux XML dans une bdd

Posté : 14 juin 2015, 01:25
par tof73

Re: Intégrer un flux XML dans une bdd

Posté : 14 juin 2015, 11:08
par blinz
Salut j'ai put tout remplir en bdd c'est cool.
Juste un champ qui me pose toujours problème c'est le champ photo ou dans lequelle je recuperere en fait une url sur mon xml

Dans ma table cette colonne se nomme "photo" et dans mon flux elle se nomme "<largeImage>", pour la petite précision.

Le problème que je rencontre et que tout simplement je ne peut rentrer en bdd l'url, elle se présente sous cette forme par exemple:
<largeImage>http://www.lesite.com/static/0/visuel/3 ... largeImage>

Mon code actuel ou j'en suis :
<?php
    //connection a la base de donnee
    $dbhost = "localhost";
    $dbuser = "root";      // mysql user
    $dbpass = "";       // mysql password
    $dbname = "mabase";     // mysql database
    $conn=mysql_connect($dbhost,$dbuser,$dbpass) or die(erreurServeurMySQL());
    mysql_select_db($dbname,$conn) or die('Erreur de selection '.mysql_error()); // problème sur la bdd
     
    $flux = simplexml_load_file('http://localhost/test/source.xml'); // Source du flux.xml
     
    foreach ($flux->product as $item) {
 
	$titre = $item->titre;
	$price = $item->price;
	$url = $item->url;
	$date_debut_sortie = $item->date_debut;
	$date_fin_sortie = $item->date_fin;
	$street = $item->street;
	
	// On fait un explode afin de récupérer ce qu'il nous interesse
	$postcode  = $item->extra2;
	$pieces = explode(" ", $postcode);
	
	echo $pieces[0].'<br><br>'; // CODEPOSTAL
	echo $pieces[1].'<br><br>'; // Séparation
	echo $pieces[2].'<br><br>'; // VILLE
	
	// On attribut le département en fonction des 2 premiers chiffre du code postal
	$departement = substr($postcode, 0, 2);
	
	// Attribution de la valeur id 99
	$id_simply_user = '99';
   
   
	$sql = "INSERT INTO `matable` (id_simply_user,titre,price,url,date_debut,date_fin,street,postcode,city,id_departements) VALUES ('$id_simply_user','$titre','$price','$url','$date_debut','$date_fin','$street','$pieces[0]','$pieces[2]','$departement')";
	$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
	echo 'données inserées en base';
  
 
}
 
?>
Merci à vous :wink: