Retrouvez cet article dans : Linux Pratique 37
Quel intérêt ?
Une méthode pour informer les internautes de votre mise à jour de contenu est de mettre en place une Newsletter. Mais ceci peut s'avérer très fastidieux : inscription de la part des Internautes, risque de spam pour eux, et de votre côté il vous faudra créer cette fameuse newsletter, veiller à ce que la liste des abonnés soit à jour, effectuer les envois, etc. C'est pourquoi les flux de syndication sont tout indiqués, car ils simplifient la vie du webmaster et des internautes. L'autre intérêt d'un flux RSS, c'est que d'autres sites (spécialisés en cela) peuvent le récupérer et afficher les dernières nouvelles de votre site. Ainsi, en cliquant sur ce fil de nouvelles, les lecteurs seront dirigés sur votre site. Un flux RSS est un simple fichier texte que vous hébergez sur votre site, dans un répertoire de votre choix. Il vous faudra le mettre à jour manuellement ou, cas le plus fréquent, faire en sorte qu'il soit géré de façon dynamique.Mise à jour manuelle
Un flux RSS s'écrit en langage XML (Extensible Markup Language). Le XML, standard du W3C, est utilisé principalement pour éditer des données structurées, à l'aide de balises spécifiques. L'objectif de ce langage est d'ailleurs de faciliter le partage et l'échange de données en séparant le contenu du contenant. Un fichier XML contient des " éléments ", chacun étant entouré de balises spécifiques. Pour utiliser correctement le langage XML, il faut respecter des règles strictes, à savoir :- ne pas oublier de déclarer qu'il s'agit d'un document XML au début du document (version utilisée, codage des caractères, etc.) ;
- le document ne doit avoir qu'un seul élément racine, qui contiendra tous les autres éléments ;
- chaque balise ouvrante doit être associée à sa balise fermante (et attention, XML est sensible à la casse des caractères !) ;
- les valeurs des attributs doivent être spécifiées entre guillemets.
- Au début, on indique qu'il s'agit d'un fichier XML et on précise la version et l'encodage du texte. Il faut ensuite préciser la version de RSS utilisée, puis ouvrir le canal avec la balise
<channel>. - Suivent les informations d'ordre général sur votre site : titre, URL, description, etc. Vous pouvez même préciser la langue utilisée, ajouter une image caractéristique, des informations de copyright, une date de mise à jour, etc.
- Puis, chaque nouvelle est définie entre une paire de balises
<item></item>. Vous devez y mettre un titre, le lien vers le contenu complet de la nouvelle (URL en absolu) et une description.
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title>Le titre de votre site Web</title>
<link>http://URL_de_votre_site_web</link>
<description>Une description de votre site</description>
<language>fr</language>
<copyright>Peut-être une mention de copyright ici</copyright>
<image>
<title>Le titre descriptif de l'image</title>
<url>http://URL_de_l'image</url>
<link>http://URL_vers_laquelle_pointe_l'image</link>
</image>
<pubdate>Date et heure de publication</pubdate>
<item>
<title>Le titre d'une première nouvelle</title>
<link>http://URL_pointant_vers_la_nouvelle</link>
<pubDate>Date et heure de publication</pubDate>
<description>Une brève description de la nouvelle</description>
</item>
<item>
<title>Et une deuxième nouvelle</title>
<link>http://URL_pointant_vers_la_nouvelle</link>
<pubDate>Date et heure de publication</pubDate>
<description>Une brève description de la nouvelle</description>
</item>
</channel>
</rss>
Il ne vous reste plus qu'à éditer et enregistrer ce fichier (ex. : 
Mise à jour automatique
En effet, si vous gérez votre site web à l'aide d'une base de données, il vous suffit de créer un script PHP qui va générer automatiquement votre fichier XML à partir des informations récupérées dans la base de données. Le fichier PHP va, d'une part, interroger la base de données pour vérifier que de nouvelles données ont été ajoutées et, d'autre part, il va mettre en forme ces données en créant le fichier XML.Création de la base de données
Pour notre exemple, nous allons rapidement créer une base de données fictive, nommée " demorss ", à l'aide de PhpMyAdmin. Cette base comporte une table nommée " articles ". Pour déterminer les champs associés à cette table, il est nécessaire de se référer à la structure du fichier XML. Ainsi, nous créons les champsCREATE TABLE `articles` ( `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `author` VARCHAR( 255 ) NOT NULL , `title` VARCHAR( 255 ) NOT NULL , `pubDate` VARCHAR( 50 ) NOT NULL , `description` TEXT NOT NULL ) ENGINE = MYISAM ;Ensuite, nous saisissons rapidement deux entrées dans cette base (onglet Insérer dans PhpMyAdmin), afin de simuler l'ajout de deux nouveaux articles. Attention ici au format de la date pour le champ
Création du fichier PHP
Nous allons créer à présent un fichier PHP, nommé<?php
// on appelle la libraire DB
require_once "DB.php";
// connexion à la base puis test de la variable $db
$dsn = "mysql://username:password@localhost/demorss";
$db = DB::connect($dsn);
if (DB::isError($db)) {
die($db->getMessage());
}
// récupération et tri des éléments de la table " articles " + test en cas d'erreur
$result = $db->query("SELECT id, author, title, pubDate, description FROM articles ORDER BY pubDate");
if (DB::isError($result)) {
die($result->getMessage());
}
// instruction conditionnelle : tant qu'il y a des articles, on les affiche à l'écran.
while ($article = $result->fetchRow(DB_FETCHMODE_ASSOC)) {
echo "<pre>";
print_r($article);
echo "</pre>";
}
?>
Pour le moment, notre script récupère et renvoie correctement les données de notre base. C'est ce que l'on peut vérifier en ouvrant ce fichier dans notre navigateur Web (Fig. 2).

// S'il y a des articles, on génère le flux RSS
if ($result->numRows() != 0) {
// Envoi de l'en-tête du fichier pour signifier au navigateur qu'il s'agit d'un fichier XML.
header("Content-Type: text/xml");
// La variable $xml contiendra le code xml du flux
$xml = '<' . '?xml version="1.0" encoding="ISO-8859-1"?' . '>';
// Traitement du format RSS 2.0
$xml .= '<rss version="2.0">';
$xml .= '<channel>';
$xml .= '<title>Premier flux RSS</title>';
$xml .= '<link>http://www.linux-pratique.com</link>';
$xml .= '<description>Mon premier Flux RSS</description>';
$xml .= '<copyright>Linux Pratique</copyright>';
$xml .= '<managingEditor>Fleur Brosseau</managingEditor>';
$xml .= '<webMaster>FB</webMaster>';
$xml .= '<generator>Mon Script PHP</generator>';
$xml .= '<lastBuildDate>' . date("r") . '</lastBuildDate>';
$xml .= '<ttl>1440</ttl>';
// on retrouve ici une instruction conditionnelle. Pour chaque article le script récupère les valeurs des champs définis dans la base et les inclue dans les balises XML adéquates
while ($article = $result->fetchRow(DB_FETCHMODE_ASSOC)) {
$xml .= '<item>';
$xml .= '<author>' . stripslashes($article["author"]) . '</author>';
$xml .= '<title>' . stripslashes($article["title"]) . '</title>';
$xml .= '<link>http://www.linux-pratique.com/article/' . $article["id"] . '.html</link>';
$xml .= '<pubDate>' . date("r", $article["pubDate"]) . '</pubDate>';
$xml .= '<guid>http://www.linux-pratique.com/article/' . $article["id"] . '.html</guid>';
$xml .= '<description>' . stripslashes($article["description"]) . '</description>';
$xml .= '</item>';
}
$xml .='</channel>';
$xml .= '</rss>';
echo $xml;
}
?>


Voilà , notre script est terminé. Si vous ouvrez ce fichier dans votre navigateur Web (dans notre exemple, http://localhost/demorss/rss.php), vous obtenez quelque chose de similaire à la figure 3, page précédente.
Notez bien la fonction




Donnez votre avis
Vous devez avoir ouvert une session pour écrire un commentaire.