Bonjour,

Je suis actuellement à la recherche d'un script me permettant d'afficher les actualités de différents sites web, via leurs flux RSS.

Je me suis donc tourné vers SimpeXML, j'arrive bien a afficher les actualités d'un seul flux avec ce script :

<?php
try{
if(!@$fluxrss=simplexml_load_file('http://www.alsacreations.com/rss/')){ throw new Exception('Flux introuvable');}
if(empty($fluxrss->channel->title) && empty($fluxrss->channel->description) &&empty($fluxrss->channel->item->title)) throw new Exception('Flux invalide');
$i=0;
$nb_affichage = 10;
echo '<ul>';
foreach($fluxrss->channel->item as $item){
echo '<li><a href="'.(string)$item->link.'">'.(string)$item->title.'</a><p>'.(string)$item->description.'</p> <i>publié le'.(string)date('d/m/Y à G\hi',strtotime($item->pubDate)).'</i></li>';
if(++$i>=$nb_affichage)
break;
}
echo '</ul>';
}

catch(Exception $e){
echo $e->getMessage();
}

Le problème est que l'orsque j'ajoute un deuxième flux comme ceci, le message d'erreur flux invalide s'affiche :

if(!@$fluxrss=simplexml_load_file('flux1.xml', 'flux2.xml'))
   { throw new Exception('Flux introuvable');}

merci pour votre aide.

7 réponses


passealasuite
Auteur
Réponse acceptée

Pour les personnes que sa intéressent j'ai utilisé une BDD pour arrivé à mes fins !

Bonjour,
la fonction simplexml_load_file() ne fonctionne que pour 1 flux.
Il vaut mieux que tu créés une fonction ou que tu dupliques ton code pour le faire avec plusieurs flux

Peux tu me donner une piste pour créer cette fonction en PHP ?

Un truc comme ça

function FluxXml($flux) {
try{
if(!@$fluxrss=simplexml_load_file($flux)){ throw new Exception('Flux introuvable');}

if(empty($fluxrss->channel->title) && empty($fluxrss->channel->description) &&empty($fluxrss->channel->item->title)) throw new Exception('Flux invalide');

$i=0;
$nb_affichage = 10;

echo '<ul>';
foreach($fluxrss->channel->item as $item){
echo '<li><a href="'.(string)$item->link.'">'.(string)$item->title.'</a><p>'.(string)$item->description.'</p> <i>publié le'.(string)date('d/m/Y à G\hi',strtotime($item->pubDate)).'</i></li>';

if(++$i>=$nb_affichage)
break;
}

echo '</ul>';
}

catch(Exception $e){
echo $e->getMessage();
}
}
echo FluxXml('http://www.alsacreations.com/rss/');

Merci pour ton aide mais je ne voit pas bien ce qu'apporte ta modification.

J'ai créé une fonction qui se nomme FluxXml, comme ça je peux afficher le contenu d'un flux.
En reprenant mon code, j'ai mis à la fin

echo FluxXml('http://www.alsacreations.com/rss/');

et tu peux faire

echo FluxXml('http://www.alsacreations.com/rss/');
echo FluxXml('http://www.alsacreations.com/rss/flux5');
echo FluxXml('http://www.grafikart.fr/rss/');

pour afficher plus facilement plusieurs flux

Le problème est que je souhaite afficher tous les flux en fonction de leurs date de publication.

Dans ton exemple, il affichera le flux1, ensuite le flux2, etc...