You speak english?
Langage : PHP / MYSQL / XML
Date : 2009
Détails : Créer en php son propre flux RSS dynamique


Le principe ?

Vous avez surement déjà vu sur le net le terme RSS ( y compris sur ce site ).
Alors que signifie ce petit logo orange ?
On appelle flux RSS  un fichier qui contient les derniers contenus publiés, généralement les news.
Il utilise la technologie XML pour organisée les données.
Les données qui sont propagées peuvent êtres lues par quiconque via un agrégateur ou un lecteur RSS.
Elles peuvent même être affichés sur un autre site.

Comment est structuré un fils RSS ?


Pour que tout le monde arrivent à lire votre flux RSS vous devez le structurer suivant une norme.
Ici je vais vous présenter la norme RSS 2.0.

Voici un exemple simple :

<?xml version="1.0" encoding="iso-8859-1" ?>
<rss version="2.0"> <!-- balise rss avec son numero de version -->
    <channel> <!-- la balise unique channel qui defini un flux-->
        <title>Titre du flux RSS</title> 
        <link>http://www.exemple.com</link>
        <description>Description du flux RSS</description>
 
        <!-- les balises item définissent une news -->
        <item>
            <title>Titre de la news</title> 
            <link>http://www.exemple.com/mesnews.php?id=1</link> 
            <author>Auteur</author>
            <description>Description de la news</description> 
            <pubDate>Mon, 19 Dec 2005 12:00:00 GMT</pubDate>
        </item>
        
        .
        .
        . 
        Listé ici tout les news de votre flux.
 
    </channel>
</rss>

Remarque :
Pour fonctionner votre fichier doit avoir obligatoirement une entête du type XML
(<?xml version="1.0" encoding="iso-8859-1" ?>)

Quel sont les différents éléments que je peux diffuser ?


CHANNEL
 
title > Titre du channel
link > URL du site contenant le channel
description > Description du channel
language > Langue du channel
copyright > Info sur le copyright du channel
managingEditor > Mail de la personne responsable du contenu
webMaster > Mail du webmaster
pubDate > Date de publication
lastBuildDate > Date de la dernière publication
category > Catégorie à laquelle le channel appartient
generator > Programme utilisé pour générer le channel
docs > Lien vers la documentation du format utilisé dans le fichier RSS
cloud > Permet à un programme de s'enregistrer pour être notifié des modifications de ce channel
ttl > Time to live, avant le prochain rafraîchissement
image > Image affichée avec le channel
rating > note PICS
textInput > Ajouter une zone de saisie de texte
skipHours > Heures que les agrégateurs peuvent ignorer
skipDays > Jours que les agrégateurs peuvent ignorer
 
ITEM
 
title > Titre de l'item
link > URL de l'item
description > Description de l'item
author > Mail de l'auteur de l'item
category > Catégorie à laquelle l'item appartient
comments > Lien vers une page de ccommentaires sur l'item
enclosure > Objet media attaché à l'item
guid > Texte qui identifie de manière unique cet item
pubDate > Date de publication
source > Channel auquel l'item appartient
 
 
Remarque : Pour lier votre page web à votre flux RSS vous devez ajouter un lien dans le header.
Du type : <link rel="alternate" type="application/rss+xml" href="http://www.site.com/rss.xml" />

Créer un flux RSS dynamique en PHP

Avec la technologie PHP vous pouvez utiliser votre base de données pour créer dynamiquement le flux RSS.
L'internaute ira donc lire votre flux RSS à l'adresse http://www.votresite.com/rss.php
Voici ci dessous comment procèder :

<?php
 
// on détermine le type de document, ici du xml
header ( "Content-type: text/xml" ) ;
 
/*
 Inclure ici votre script de connexion base de données
*/
 
$date = date ( "Y:m:d" ) ;
 
// On récupère la liste des news publiés et dont la date de publication est valable
// et on limite à 10 entrées 
$requete_news = mysql_query ( "
    SELECT
        *
    FROM
        news    
    WHERE
        actif=1
        and date_debut <= '$date'
    ORDER BY
        date DESC
    LIMIT 10
    ") or die ( mysql_error() ) ;
    
$rss = "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>" ;
$rss .= "<rss version=\"2.0\">" ;
$rss .= "<channel>" ;
$rss .= "<title>Nom de votre site"</title>" ;
$rss .= "<link>Lien de votre site</link>" ;
$rss .= "<description>Description de votre site</description>" ;
 
while ( $tab_news = mysql_fetch_array ( $requete_news ) ) { 
    
    // Récupère la date de publication de la news
    $date_news= date ( "D, d M Y H:i:s" , strtotime( $tab_news[date] ) );
    
    // On crée l'item avec ces données
   $rss .= "<item>" ;
    $rss .= "<title><![CDATA[".$tab_news['titre']."]]></title>"; 
    $rss .= "<link>http://www.urldusite.com/index.php?rubrique=news&amp;amp;idnews=".$tab_news['id']."</link>" ; 
    $rss .= "<description><![CDATA[".$tab_news['texte']."]]></description>" ; 
    $rss .= "<pubDate>".$date_news." GMT</pubDate>" ; 
    $rss .= "</item>" ;
}
 
$rss .= "</channel>" ;
$rss .= "</rss>" ;
 
// On affiche le contenu XML
echo $rss;
 
?>
 
 




About

Créateur de solutions innovantes

Keep in touch

wakdev - PGP Public Keyjulien [arobase] wakdev.com

All rights reserved : wakdev
Tread softly because you tread on my internet...