[Réglé] Flux Rss

Ce forum aborde toutes les questions qu'un codeur ou webmaster pourrait se poser, et n'ayant aucun rapport direct avec phpBB.
Tout ce qui peut concerner la récupération des sessions de phpBB sur votre site, doit se faire dans cette section.

Modérateur: Equipe

Règles du forum
A lire impérativement : Règlement de phpBB-fr.com
Partager sur FacebookPartager sur TwitterPartager sur Google+

[Réglé] Flux Rss

Messagepar Yo !! » 19 Mai 2008 à 16:28

Bonjour, est ce que quelqu'un sait comment on incere un Flux RSS sur un site ?

J'ai un partenariat d'actualité moto avec un site et on ma donné un lien .xml mais je ne sais pas comment l'incerer sur ma page.

Merci d'avance du coup de main
Modifié en dernier par Yo !! le 21 Mai 2008 à 14:15, modifié 3 fois.
http://www.moto2reve.com

Site internet de petites annonce moto
Yo !!
Apprenti-posteur
Apprenti-posteur
 
Messages: 139
Enregistré le: 19 Mai 2008 à 16:21
Localisation: 91 Essonne

Re: Flux Rss

Messagepar Oyo » 19 Mai 2008 à 17:12

Salut,

Une peu de lecture ;)
http://www.commentcamarche.net/php/phpxml.php3
http://tecfa.unige.ch/guides/tie/html/p ... p-xml.html

En gros, il te faut implémenter une classe afin de pouvoir lire ton fichier xml afin de pouvoir utiliser les données ;)
Ancien Administrateur de phpBB-fr - R.I.P Oyo 2006~2009

PrestaShop | PrestaStore
Avatar de l’utilisateur
Oyo
Inoubliable administrateur
 
Messages: 15302
Enregistré le: 12 Fév 2003 à 20:02
Localisation: Paris

Re: Flux Rss

Messagepar Yo !! » 20 Mai 2008 à 09:43

Oyo a écrit:Salut,

Une peu de lecture ;)
http://www.commentcamarche.net/php/phpxml.php3
http://tecfa.unige.ch/guides/tie/html/p ... p-xml.html

En gros, il te faut implémenter une classe afin de pouvoir lire ton fichier xml afin de pouvoir utiliser les données ;)


Merci pour ton coup de main mais je n'ai pas tout compris dans tes liens :(
http://www.moto2reve.com

Site internet de petites annonce moto
Yo !!
Apprenti-posteur
Apprenti-posteur
 
Messages: 139
Enregistré le: 19 Mai 2008 à 16:21
Localisation: 91 Essonne

Re: Flux Rss

Messagepar Oyo » 20 Mai 2008 à 11:05

Salut,

Les site après lecture, aurai du te permettre de faire ce que tu souhaitais, voilà une fonction que j'ai modifié afin de parser des rss afin de récupérer les informations, cette fonction est basée sur celle-là modifier afin de parser les flux standards (testé sur le flux rss du site du figaro)

Code: Tout sélectionner
// FONCTION qui va lire le fichier XML et le placer dans un tableau
// Cette fonction sert de parseur
function lit_xml($fichier,$item,$champs) 
{
	// On lit le fichier
	if($chaine = @implode('',@file($fichier))) 
	{
		// On supprime les flux standards 
		$chaine = str_replace('<![CDATA[', '', $chaine);
		$chaine = str_replace(']]>', '', $chaine);

		// On explode sur <item>
		$tmp = preg_split("/<\/?".$item.">/",$chaine);
		
		// Pour chaque <item>
		for($i=1;$i<sizeof($tmp)-1;$i+=2)
		{
			// On lit les champs demandés <champ>
			foreach($champs as $champ) 
			{
				$tmp2 = preg_split("/<\/?".$champ.">/",$tmp[$i]);
				// On ajoute l'élément au tableau et on supprime les espaces inutiles
				$tmp3[$i-1][] = trim(@$tmp2[1]);
			}
		}
		// et on retourne le tableau dans la fonction
		return $tmp3;
	}
}


Afin d'avoir un belle affichage de ce type:
jj/mm/aaaa - titre

J'ai ajouté ces 2 fonctions:

Code: Tout sélectionner
function getMois($month)
{
	$mois['Jan'] = '01';
	$mois['Feb'] = '02';
	$mois['Mar'] = '03';
	$mois['Apr'] = '04';
	$mois['May'] = '05';
	$mois['Jun'] = '06';
	$mois['Jul'] = '07';
	$mois['Aug'] = '08';
	$mois['Sep'] = '09';
	$mois['Oct'] = '10';
	$mois['Nov'] = '11';
	$mois['Dec'] = '12';

	return $mois[$month];
}

function format_date($date)
{
	$format = preg_split("/[\s,]+/", $date);
	
	$jour = ($format[1] < 10) ? '0'.$format[1] : $format[1];
	$mois = getMois($format[2]);
	$annee = $format[3];
	
	return $jour.'/'.$mois.'/'.$annee ;
}


Voilà donc comment on s'en sert:
Code: Tout sélectionner
// Lecture du FLUX XML sur le serveur
$xml = lit_xml('flux.xml', 'item', array('title', 'link', 'pubDate'));

// Une petite boucle suffit pour retrouver les élément du tableau
// retourné dans la fonction lit_xml()
echo '<pre>';
foreach($xml as $row) 
{	
	$titre = $row[0];
	$url = $row[1];
	$date = format_date($row[2]);
	
	echo $date.' - <a href="'.$url.'">'.$titre.'</a><br />';
}	
echo '</pre>';
// Et voilà ;)
Ancien Administrateur de phpBB-fr - R.I.P Oyo 2006~2009

PrestaShop | PrestaStore
Avatar de l’utilisateur
Oyo
Inoubliable administrateur
 
Messages: 15302
Enregistré le: 12 Fév 2003 à 20:02
Localisation: Paris

Re: Flux Rss

Messagepar Yo !! » 20 Mai 2008 à 13:49

C'est impressionnant comment je suis mauvais.

J'ai copié ton code pour le mettre dans ma page et sa donne cela

Code: Tout sélectionner
<?php 

// FONCTION qui va lire le fichier XML et le placer dans un tableau
// Cette fonction sert de parseur
function lit_xml($fichier,$item,$champs) 
{
   // On lit le fichier
   if($chaine = @implode('',@file($fichier))) 
   {
      // On supprime les flux standards 
      $chaine = str_replace('<![CDATA[', '', $chaine);
      $chaine = str_replace(']]>', '', $chaine);

      // On explode sur <item>
      $tmp = preg_split("/<\/?".$item.">/",$chaine);
      
      // Pour chaque <item>
      for($i=1;$i<sizeof($tmp)-1;$i+=2)
      {
         // On lit les champs demandés <champ>
         foreach($champs as $champ) 
         {
            $tmp2 = preg_split("/<\/?".$champ.">/",$tmp[$i]);
            // On ajoute l'élément au tableau et on supprime les espaces inutiles
            $tmp3[$i-1][] = trim(@$tmp2[1]);
         }
      }
      // et on retourne le tableau dans la fonction
      return $tmp3;
   }
}

function getMois($month)
{
   $mois['Jan'] = '01';
   $mois['Feb'] = '02';
   $mois['Mar'] = '03';
   $mois['Apr'] = '04';
   $mois['May'] = '05';
   $mois['Jun'] = '06';
   $mois['Jul'] = '07';
   $mois['Aug'] = '08';
   $mois['Sep'] = '09';
   $mois['Oct'] = '10';
   $mois['Nov'] = '11';
   $mois['Dec'] = '12';

   return $mois[$month];
}

function format_date($date)
{
   $format = preg_split("/[\s,]+/", $date);
   
   $jour = ($format[1] < 10) ? '0'.$format[1] : $format[1];
   $mois = getMois($format[2]);
   $annee = $format[3];
   
   return $jour.'/'.$mois.'/'.$annee ;
}

// Lecture du FLUX XML sur le serveur
$xml = lit_xml('http://www.webcarnews.com/affiliation.xml', 'item', array('title', 'link', 'pubDate'));

// Une petite boucle suffit pour retrouver les élément du tableau
// retourné dans la fonction lit_xml()
echo '<pre>';
foreach($xml as $row) 
{   
   $titre = $row[0];
   $url = $row[1];
   $date = format_date($row[2]);
   
   echo $date.' - <a href="'.$url.'">'.$titre.'</a><br />';
}   
echo '</pre>';
// Et voilà ;)
 ?> 


ET voila mon message d'erreur :

Code: Tout sélectionner
Warning:  Invalid argument supplied for foreach() in C:\moto2reve\actualites\index.php on line 78


je pense etre vraiment mauvais car ca ne marche pas :?

Désolé de t'embeter mais j'appreci l'aide.
http://www.moto2reve.com

Site internet de petites annonce moto
Yo !!
Apprenti-posteur
Apprenti-posteur
 
Messages: 139
Enregistré le: 19 Mai 2008 à 16:21
Localisation: 91 Essonne

Re: Flux Rss

Messagepar Oyo » 20 Mai 2008 à 14:50

Normal, le flux rss de ton partenaire n'est pas vraiment normés... du coup il faut modifier un peu les fonctions:

Trouve ceci:
Code: Tout sélectionner
$tmp3[$i-1][] = trim(@$tmp2[1]);

Remplace le par:
Code: Tout sélectionner
$tmp3[$i-1][] = utf8_decode(trim(@$tmp2[1]));


Remplace ça
Code: Tout sélectionner
function getMois($month)
{
	$mois['Jan'] = '01';
	$mois['Feb'] = '02';
	$mois['Mar'] = '03';
	$mois['Apr'] = '04';
	$mois['May'] = '05';
	$mois['Jun'] = '06';
	$mois['Jul'] = '07';
	$mois['Aug'] = '08';
	$mois['Sep'] = '09';
	$mois['Oct'] = '10';
	$mois['Nov'] = '11';
	$mois['Dec'] = '12';

	return $mois[$month];
}

function format_date($date)
{
	$format = preg_split("/[\s,]+/", $date);
	
	$jour = ($format[1] < 10) ? '0'.$format[1] : $format[1];
	$mois = getMois($format[2]);
	$annee = $format[3];
	
	return $jour.'/'.$mois.'/'.$annee ;
}

Par ça:
Code: Tout sélectionner
function format_date($val) 
{
	$date=substr($val,8,2).'/'.substr($val,5,2).'/'.substr($val,0,4);
	return $date;
}


Et enfin remplace ça
Code: Tout sélectionner
$xml = lit_xml('http://www.webcarnews.com/affiliation.xml', 'item', array('title', 'link', 'pubDate'));

par ça
Code: Tout sélectionner
$xml = lit_xml('http://www.webcarnews.com/affiliation.xml', 'entry', array('title', 'url', 'updated'));


Edit : Au cas ou ça ne fonctionne toujours pas utilise ce fichier ;)
Code: Tout sélectionner
<?php

function read_xml($filename)
{
	if ($content = @file_get_contents($filename)) 
	{
		$content = str_replace("\r\n", "\n", $content);
	}
	return ($content);
}

function save_xml($name, $data)
{
	file_put_contents ($name, $data);
}

function lit_xml($fichier,$item,$champs) 
{
	if($chaine = @implode('',@file($fichier))) 
	{
		// On supprime les flux standards 
		$chaine = str_replace('<![CDATA[', '', $chaine);
		$chaine = str_replace(']]>', '', $chaine);
		$tmp = preg_split("/<\/?".$item.">/",$chaine);
		
		for($i=1;$i<sizeof($tmp)-1;$i+=2)
		{
			foreach($champs as $champ) 
			{
				$tmp2 = preg_split("/<\/?".$champ.">/",$tmp[$i]);
				$tmp3[$i-1][] = utf8_decode(trim(@$tmp2[1]));
			}
		}
		return $tmp3;
	}
}

function format_date($val) 
{
	$date=substr($val,8,2).'/'.substr($val,5,2).'/'.substr($val,0,4);
	return $date;
}


$link2 = read_xml('http://127.0.0.1/ENL/Test/Autres/read_xml/flux.xml');
save_xml('myflux.xml', $link2);
$xml = lit_xml('myflux.xml', 'entry', array('title', 'url', 'updated'));

echo '<pre>';
foreach($xml as $row) 
{	
	$titre = $row[0];
	$url = $row[1];
	$date = format_date($row[2]);
	
	echo $date.' - <a href="'.$url.'">'.$titre.'</a><br />';
}	
echo '</pre>';
?>
Ancien Administrateur de phpBB-fr - R.I.P Oyo 2006~2009

PrestaShop | PrestaStore
Avatar de l’utilisateur
Oyo
Inoubliable administrateur
 
Messages: 15302
Enregistré le: 12 Fév 2003 à 20:02
Localisation: Paris

Re: Flux Rss

Messagepar Yo !! » 20 Mai 2008 à 15:40

j'ai mis a jour les premier edit ca me met un message d'erreur :
Code: Tout sélectionner
Warning:  Invalid argument supplied for foreach() in C:\moto2reve\actualites\index.php on line 56



Avec Edit2 ca me met ca :
Code: Tout sélectionner
Warning:  Invalid argument supplied for foreach() in C:\moto2reve\actualites\index.php on line 55


Je pense que le foraeach() pose pb :lol:
http://www.moto2reve.com

Site internet de petites annonce moto
Yo !!
Apprenti-posteur
Apprenti-posteur
 
Messages: 139
Enregistré le: 19 Mai 2008 à 16:21
Localisation: 91 Essonne

Re: Flux Rss

Messagepar Oyo » 20 Mai 2008 à 16:23

Tu peux me remontrer le fichier que tu as ?
Le foreach pose problème lorsque les info renvoyer par lit_xml ne revoit pas les bonnes données ;)
Ancien Administrateur de phpBB-fr - R.I.P Oyo 2006~2009

PrestaShop | PrestaStore
Avatar de l’utilisateur
Oyo
Inoubliable administrateur
 
Messages: 15302
Enregistré le: 12 Fév 2003 à 20:02
Localisation: Paris

Re: Flux Rss

Messagepar Yo !! » 20 Mai 2008 à 16:26

-Code retiré par Dakin Quelia-
Motif: Dépasse le maximum autorisé.
http://www.moto2reve.com

Site internet de petites annonce moto
Yo !!
Apprenti-posteur
Apprenti-posteur
 
Messages: 139
Enregistré le: 19 Mai 2008 à 16:21
Localisation: 91 Essonne

Re: Flux Rss

Messagepar Dakin Quelia » 20 Mai 2008 à 16:28

Bonjour,

Je t'invite à mettre le code dans un fichier TXT, de le mettre sur ton FTP et de nous donner le lien vers ce fichier. :wink:

A bientôt,
Aucun support par mail, MP ou msn.
Mes MODs: ici | Mon blogue: Mon blogue | DeviantArt: cliquez ici
Avatar de l’utilisateur
Dakin Quelia
Floodeur universel
Floodeur universel
 
Messages: 21327
Enregistré le: 31 Oct 2006 à 19:33
Localisation: Belgique

Re: Flux Rss

Messagepar Yo !! » 20 Mai 2008 à 16:43

http://www.moto2reve.com

Site internet de petites annonce moto
Yo !!
Apprenti-posteur
Apprenti-posteur
 
Messages: 139
Enregistré le: 19 Mai 2008 à 16:21
Localisation: 91 Essonne

Re: Flux Rss

Messagepar Oyo » 20 Mai 2008 à 16:50

Il faudrait que tu verrifie que l'option allow_url_fopen soit sur "ON" dans ton php.ini pour se faire créer une fichier info.php (par exemple et met ce code
Code: Tout sélectionner
<?php
phpinfo();
?>
Ancien Administrateur de phpBB-fr - R.I.P Oyo 2006~2009

PrestaShop | PrestaStore
Avatar de l’utilisateur
Oyo
Inoubliable administrateur
 
Messages: 15302
Enregistré le: 12 Fév 2003 à 20:02
Localisation: Paris

Re: Flux Rss

Messagepar Yo !! » 20 Mai 2008 à 18:32

ouai mais sur mon site, j'ai pas accés a php.ini
http://www.moto2reve.com

Site internet de petites annonce moto
Yo !!
Apprenti-posteur
Apprenti-posteur
 
Messages: 139
Enregistré le: 19 Mai 2008 à 16:21
Localisation: 91 Essonne

Re: Flux Rss

Messagepar Oyo » 20 Mai 2008 à 20:57

Justement phpinfo() est là pour ça ;)
Ancien Administrateur de phpBB-fr - R.I.P Oyo 2006~2009

PrestaShop | PrestaStore
Avatar de l’utilisateur
Oyo
Inoubliable administrateur
 
Messages: 15302
Enregistré le: 12 Fév 2003 à 20:02
Localisation: Paris

Re: Flux Rss

Messagepar Yo !! » 21 Mai 2008 à 09:08

et je doit le mettre ou ce fichié?
http://www.moto2reve.com

Site internet de petites annonce moto
Yo !!
Apprenti-posteur
Apprenti-posteur
 
Messages: 139
Enregistré le: 19 Mai 2008 à 16:21
Localisation: 91 Essonne

Suivante

Retourner vers Coding, Webmastering et Sécurité informatique

 


  • Articles en relation
    Réponses
    Vues
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum : Exabot [Bot] et 4 invités