Créer un flux RSS xml en php

Le flux RSS a été largement popularisé par le succès gigantesque des plate-formes gratuites de blog. Il permet, via des outils adaptés (lecteurs de flux, marque-pages dynamiques) d'avoir accès en permanence aux articles les plus récents de ses blogs préférés. Pour le webmaster c'est une opportunité formidable de diffusion massive de contenu...et pas seulement dans le cadre d'un blog.

Un flux RSS pour quoi faire ?

Liste de produits, services, mise à jour logiciels, offres d'emploi, actualités, pourvu qu'ils soient stockés dans une base de données, accompagnés des champs nécessaires au bon formatage de votre fichier xml, la base de votre flux RSS.

De MySQL à XML en passant par PHP

Le script suivant, qu'il sera possible d'appeler par exemple generationrss.php, génèrera sur votre serveur web un fichier rss.xml à chaque exécution. Pour s'assurer de disposer à chaque fois des dernières entrées de la base de données, il pourra être utile de l'ajouter aux scripts d'enrichissement de la base (par exemple dans une redirection suivant l'ajout d'une nouvelle actualité) afin de s'éviter une mise à jour manuelle pour chaque article.

<?php
//entête xml de votre fichier rss 2.0
$xml = '<?xml version="1.0" encoding="iso-8859-1"?><rss version="2.0">';
$xml .= '<channel>';
$xml .= '<title>Transfert Mercato</title>';
$xml .= '<link>http://www.transfert-mercato.com</link>';
$xml .= '<description>Actualité des transferts de foot.</description>';
$xml .= '<copyright>© MadeBY</copyright>';
$xml .= '<language>fr</language>';
$xml .= '<image>';
$xml .= ' <title>Transfert Mercato</title>';
$xml .= ' <url>http://www.transfert-mercato.com/images/logo.png</url>';
$xml .= ' <link>http://www.transfert-mercato.com</link>';
$xml .= '</image>';
$datedujour= date("D, d M Y H:i:s +0100");
$xml .= '<pubdate>'.$datedujour.'</pubdate>';
//ajout des paramêtres de connexion à la base
require('parametremysql.php');
//requête (ici on récupère les 10 derniers billet du site www.transfert-mercato.com)
$listebillet = "SELECT * FROM `posttm` ORDER BY `post_id` DESC LIMIT 0 , 10";
$billet = mysql_db_query($db,$listebillet,$connection);//$db et $connection sont définis dans votre fichier de configuration...
while($billets=mysql_fetch_array($billet)){
$titre=$billets['post_title'];
$adresse=$billets['post_url'];
$resume=$billets['post_chapo'];
$dateposte=$billets['post_date'];//Un timestamp de 14 caractères
$date=date("D, d M Y H:i:s +0100", strtotime($dateposte));

$xml .= '<item>';
$xml .= '<title>'.$titre.'</title>';
$xml .= '<link>'.$adresse.'</link>';
$xml .= '<pubDate>'.$date.'</pubDate>';
$xml .= '<description>'.$resume.'</description>';
$xml .= '</item>';
}

$xml .= '</channel>';
$xml .= '</rss>';

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

echo 'Done';
?>

Avertir ses visiteurs

En ajoutant cette ligne dans la <head> de l'index du site, les navigateurs récents pourront proposer l'ajout automatique de marque-pages dynamiques :

<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="http://www.transfert-mercato.com/rss.xml" />

En savoir plus sur MB Création :