Comment créer un flux RSS automatique avec PHP et mySQL ?

Publié par mook

Comment créer un flux RSS dynamique à partir d'une base de donnée mySQL et PHP ?

Tout d'abord, un flux RSS s'écrit en XML qui est un langage stricte, ce qui veut dire qu'il n’accepte pas d'erreur dans le code sinon il est est illisible par les agrégateur de flux. Il y a plusieurs choses importantes à savoir avant de se plonger dans le code :

  • Les liens ou urls doivent s'écrire en absole. On écrira par exemple : http://www.2activ.com/mapage.html
  • Le format de la date de publication doit s'écrire au format des dates américaines. On écrira par exemple :  Sat, 20 Jan 2007 22:22:22 +0100
  • Les dates doivent être précédées du chiffre zéro quand elle sont inférieur à 12:00. On écrira par exemple 07:00:00 et non pas 7:00:00

L’entête du fichier XML

Chaque fichier RSS doit avoir le bout de code suivant, qui est indispensable. Pour faire simple, c'est l’entête du fichier. Ce bout de code contient les informations sur votre site.

<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title>Le titre du site</title>
<link>http://www.monsite.com</link>
<description>La description du site, du flux</description>
<language>fr</language>
<copyright>Les infos sur les droits d'auteur</copyright>
<image>
<title>Titre de l'image du flux</title>
<url>http://www.monsite.com/image-de-mon-flux.jpg</url>
<link>http://www.monsite.com</link>
</image>
<pubDate>Sat, 20 Jan 2011 22:00:00 +0100</pubDate>

Les blocs d'items

Un item est une information relative à un article de votre site. C'est simplement un aperçu de votre article original.

<item>
<title>Titre de votre article</title>
<link>http://www.monsite.com/url-de-mon-article.html</link>
<guid isPermaLink="true">http://www.monsite.com/url-de-mon-article.html</guid>
<description>Description de l'aricle originale.</description>
<pubDate>Sat, 20 Jan 2011 22:00:00 +0100</pubDate>
</item>

Ce bloc d'informations sera répété au nombre d'articles présents sur votre site. Il est tout de meme recommandé de le limité à 10 items.

Script PHP pour créer un flux RSS dynamique

<?php

$str = '<?xml version="1.0" encoding="UTF-8"?>';

$str .= '<rss version="2.0">'; 

$str .= '<channel>'; 

$str .= '<title>Titre du flux</title>';

$str .= '<link>http://www.monsite.com</link>';

$str .= '<description>Description du flux</description>';

$str .= '<copyright>Copyright 2011</copyright>';

$str .= '<language>fr</language>';

$str .= '<image>';

$str .= ' <title>Titre du flux</title>';

$str .= ' <url>http://www.monsite.com/image.jpg</url>';

$str .= ' <link>http://www.monsite.com</link>';

$str .= '</image>';

$date_du_jour= date("D, d M Y H:i:s +0100");

$str .= '<pubDate>'.$date.'</pubDate>';

require ('sql.php'); //fichier qui permet de se connecter à la base sql

$req =mysql_query("SELECT * FROM ma_table ORDER BY date DESC limit 0, 10");

while($tab=mysql_fetch_assoc($req)){ 

  $titre=$tab["titre"];

  $url=$tab["url"];

  $contenu=$tab["contenu"];

  $date=$tab["date"];

  $date_article = date("D, d M Y H:i:s +0100", $date);

  $str .= '<item>';

  $str .= '<title>'.$titre.'</title>';

  $str .= '<link>'.$url.'</link>';

  $str .= '<guid>'.$url.'</guid>';

  $str .= '<pubDate>'.$date_article.'</pubDate>'; 

  $str .= '<description>'.$contenu.'</description>';

  $str .= '</item>'; 

};

$str .= '</channel>';

$str .= '</rss>';

//on écrit le tout dans un fichier sur le serveur

$fp = fopen("rss.xml", 'w+');

fputs($fp, $str);

fclose($fp);

echo '<a href="rss.xml">Flux RSS</a>';

?>

10
Sur le même thème

SQL, comment faire une jointure sur 3 tables ?

Comment ajouter un bouton Twitter sur son site ou son blog ?

SQL, comment afficher des résultats sans doublons ?

PHP, comment envoyer un mail au format texte ?

SQL, comment afficher les données d'une table ?

SQL, comment vider une table d'une base de données ?

SQL, comment supprimer une table d'une base de données ?

Ajouter des colonnes à une table existante en SQL

Créer une table sous SQL

SQL, comment faire une jointure sur 2 tables ?

LES ARTICLES POPULAIRES
LES ARTICLES A DECOUVRIR