Flux RSS

Créer un flux RSS dynamique en évitant les problèmes d’encodage

Créer un flux XML avec PHP et MySQL (PhpMyAdmin)

Si vous avez besoin de créer un flux XML en PHP qui récupère des informations dans une base de données PhpMyAdmin, notre agence de référencement vous donne l’astuce !

Cette article traite aussi un sujet très emmerdant au niveau des fichiers XML : les problèmes de décodage des caractères spéciaux (é par exemple).

Sommaire pour créer un Flux RSS correctement

  1. Créer le fichier
  2. Récupérer les informations dans la base
  3. Régler les problèmes de décodage

Créer le fichier XML

Nous allons donc dans un premier temps, créer le fichier « rss.php » avec Notepad++ (sous Windows).

Afin que le fichier soit tout de même considéré comme un fichier XML, il faut ajouter des en-têtes PHP que voici :

[php]
<?php
header(« Content-type: text/xml »); // Fichier XML
echo ‘<’.’?xml version= »1.0? encoding= »ISO-8859-1??’.’>’; // Encodage ISO
include(‘sql/mysql-c.php’); // Connexion à la base de données
?>
[/php]

Récupérer les informations dans la base

Juste en dessous, il s’agit de débuter le fichier XML, avec les requêtes d’affichage

[php]
<rss version= »2.0?>
<channel>
<title>VOTRE SITE</title>
<link>http://www.votresite.com</link>
<description>Les dernières actualités VOTRE SITE</description>
<?php
$sql = « SELECT * FROM table »;
$req = mysql_query($sql) or die(‘Erreur SQL !’.$sql.’<br>’.mysql_error());
while($data = mysql_fetch_array($req)) {
$date = $data[1];
$titre = $data[2];
$contenu = $data[3];
$titre = html_entity_decode($titre);
$contenu = htmlentities($contenu, ENT_NOQUOTES, « UTF-8?);
$lg_max = 150;
if (strlen($contenu) > $lg_max)
{
$contenu = substr($contenu, 0, $lg_max);
$last_space = strrpos($contenu, » « );
$contenu = substr($contenu, 0, $last_space). »… »;
}
$url = ‘index.php?x=actualites-1&amp;i=’.$data[0];
?>
<item>
<title><?php echo $titre; ?></title>
<link>http://www.votresite.com/<?php echo $url; ?></link>
<guid isPermaLink= »true »>http://www.votresite.com/<?php echo $url; ?></guid>
<description><?php echo $contenu; ?></description>
<pubDate><?php echo $date; ?></pubDate>
</item>
<?php
}
?>
</channel>
</rss>
[/php]

Bon, la partie récupération de données, ça vous le faites bien sûr que vous le souhaitez et selon vos tables.

Régler les problèmes de décodage

Pour ce que tout le monde adore (le décodage) :

  • le format du fichier doit être encoder en ANSI
  • Le fichier XML : <?xml version= »1.0″ encoding= »ISO-8859-1″?>
  • il faut impérativement décoder le titre avec $titre = html_entity_decode($titre);
  • et décoder le contenu (description) avec  $contenu = htmlentities($contenu, ENT_NOQUOTES, « UTF-8 »)

Chombeau Alexandre

Expert en acquisition de trafic et en stratégie digitale, appelez moi au 03 66 72 14 71 afin que l'on discute ensemble de votre projet. Cliquez ICI pour une consultation de 15 minutes offertes.
2 réponses

    Les commentaires sont fermés.