Bonjour,

J'ai un souci avec un flux XML que je n'arrive pas à découper. Pourtant, cette méthode fonctionne avec les autres flux XML. (http!!!!!!!!!://api.zanox.com/xml/2011-03-01/incentives/?connectid=30BBA0E4D3A87B79A522&region=FR)


Vous trouverez ici le flux XML que je souhaite découper et là le code PHP que j'utilise :

Merci par avance pour votre aide.


// récupération du flux XML  
	$articles_xml = simplexml_load_file('http!!!!!!!!!!://api.zanox.com/xml/2011-03-01/incentives/?connectid=30BBA0E4D3A87B79A522&region=FR');
	//$articles_xml = simplexml_load_file('public.xml');
	foreach ($articles_xml ->promo as $SearchIncentivesResponse) {
   
		// ici je nome mes fonction
	
	$link1="{$promo->name}";
	$link1 = addslashes($link1);
	
	echo " Lien $link1<br />";
	
	
		//ici je découpe les chaine de caractère de la fonction titre
		// Je l'éclate pour sortire le code promotion et le nom de l'annonsseur.
	//$code_promo = strrchr($titre, ':'); // suppresion de tous les élémént avant les :
	//$code_promo = str_replace(':' ,' ',$code_promo); // Ici suppresion des : dans code promo 
	//$annonceur = substr($titre, 0, strpos($titre, ":")); // suppresion de tous les apres avant les :
		
		// Ici je vais découper la chaine description pour :
		// 1- supprimer le code promo redondant
		// 2- sortire la date de validiété entre ( ) suivie de :
		// 3 - avoir la desciption du code promo
		//$description = strchr($description, '!'); // suppresion de la date de validiét ds description:
		//$annonceur = substr($annonceur, 0, strpos($annonceur, "!")); // suppresion de tous les espace apres date :
		//$title = strchr($title, '!'); // suppresion de la date de validiét ds description:

		// ici je vais changer tous les caractere non HTML en HTML 
		$description=str_replace("€", "&euro;",$description);
		$description=str_replace("\'", "&acute;",$description);
		$description=str_replace("à", "&agrave;",$description);
		$description=str_replace("é", "&eacute;",$description);
		$description=str_replace("è", "&egrave;",$description);
		$description=str_replace("ê", "&ecirc;",$description);
		$description=str_replace("ë", "&euml;",$description);

		
		

	//$date_validite = strchr($description, '('); // suppresion de tous les élémént avant les :
	//$description = substr($description, 0, strpos($description, "valable")); // suppresion de tous  apres avant les )
	//$enddate = strchr($date_validite, ' '); // suppresion de la date de dans la desciption
	
	// verification si le champ enddate est vide et si oui alors création du date indefinie
	if  ($datefin == "Illimité" ) 
			{
			// On ajoute une date
			$datefin = "2050-01-01";
			}
	// Creation de l'URL de annonceur 
	$com =".com";	
	$url_site = "http://www.";
	$url_site = $url_site . $progname . $com ;
	
	
		// affichange du résultat apres dcoupe 
		echo " Lien $link<br />";
		echo " code promotion $code <br />";
		echo " Marchand : $progname <br />";
		echo " description-propre $description <br />";
		echo " date : $enddate <hr />\n";
		echo " date 2 : $datefin <hr />\n";
		echo " num : $num_annonceur";
		

		// ici création de l'id unique 
		$ida = substr($progname,0,2); // Ajout des 2 premiere lettre du marchand dans l'ID car ceratins n'on pas de date de validité.
		$id_unique = $code . $datefin .$idtrad ;
		$id_unique_flux = $id_unique . $ida ;
		//echo "Mon id unique creer via le flux : \n";
		echo  "id unique $id_unique_flux ";

		// Test si l'identifiant existe déjà

		$result = mysql_query("SELECT * FROM `bon_reduction` WHERE iddd = '$id_unique_flux'");
		if (!$result) {
			die('Requête invalide : ' . mysql_error());
		}

		$num_rows = mysql_num_rows($result);

		if  ($num_rows) {
			// On continue car l'identifiant existe
			continue;
		}
		else {
			// C'est bon, cela correspondant à un nouvel enregistrement
			//echo  "Ajout nouveau code" ;
			mysql_query("
			INSERT INTO `) 
			VALUES(')" ) or die(mysql_error());
		}
	} //fin foreach 
Je viens de regarder ton code, il est un peu en bazar.
Tu dis que cette méthode fonctionne avec les autres flux XML, mais comme chaque flux XML est différent, chaque méthodes est différentes.

Je vais reprendre ton code et me rapprocher de ce que tu veux.
Je me suis inspiré de ton code, et j'ai refais les appels vers le fichier XML.
Ce sont ces appels qui posaient problème.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
	<head>
		<meta charset="UTF-8">
	   <title></title>
	</head>
	<body>
		<?php
		// récupération du flux XML  
			$articles_xml = simplexml_load_file('http://api.zanox.com/xml/2011-03-01/incentives/?connectid=30BBA0E4D3A87B79A522&region=FR');
			$items = $articles_xml->incentiveItems->incentiveItem;
			
			foreach ($items as $articles) {
				// pour lire le contenu de la name
				echo "Type du produit : ".$articles->name."<br/>";
				// pour lire le contenu de la balise program
				echo "Programme : ".$articles->program."<br/>";
				// pour lire l'attribut "identifiant" du program
				echo "Id du programme : ".$articles->program["id"]."<br/>";
				// affiche le nom du produit et le chiffre entre parenthèse
				echo "name : ".$articles->admedia->admediumItem->name."<br/>";
				echo "<br/><br/>";
			
				
			} //fin foreach 
		?>
	</body>
</html>


Inspire-toi de ce que je te donne pour faire tous ton script et ça ne devrait pas poser problème.