Créer un flux RSS à partir d'une base MySQL.

Vous savez créer un flux RSS pour votre site. C'est bien. Mais il y a moyen de se simplifier la vie. En effet, vous devez pour l'instant aller modifier votre fichier XML manuellement et le mettre en ligne pour qu'il soit à jour. On peut se simplifier la vie en créant un script qui va aller récupérer les informations de votre BDD et créer le flux automatiquement.

Créer la table


La première étape consiste à créer une table dans laquelle on insèrera le contenu du flux. Il faudra donc qu'elle comporte 4 champs : Voici le code SQL à taper:

CREATE TABLE `flux_rss` (
`titre` TEXT NOT NULL ,
`lien` TEXT NOT NULL ,
`description` TEXT NOT NULL ,
`date` TEXT NOT NULL
) ENGINE = MYISAM ;


Créer le formulaire.


Il faut maintenant créer un formulaire pour remplir la base. Rien de plus simple ! Le voici :

<html>
<head>
<meta name="robots" content="noindex" />
<title>Formulaire du flux RSS/title>
</head><body>

Jusqu'ici rien de compliqué puisque c'est le header de la page de forumulaire. Vous remarquerez au passage la balise META robots noindex qui indique aux robots qu'il ne faut pas indexer cette page. (Ce serait idiot qu'il indexe une page d'administration!!). Passons maintenant au code PHP:

<?php
if(isset($_POST['titre'])){

Il suffit de regarder si la variable titre existe. Ce n'est pas la peine de vérifier si les autres sont vides, vous n'allez quand même pas valider un formulaire alors qu'il n'est pas rempli:

$connection = mysql_connect('localhost', 'root', 'passwd') ;
if(!$connection){
die('Connection impossible:'.mysql_error());
}
mysql_select_db('ma_base');

On se connecte à MySQL en vérifiant que la connection a réussi sinon on affiche l'erreur.

$date= date('D d M Y H:i:s');
//Récupération de la date pour l'insérer dans le flux
mysql_query("INSERT INTO flux_rss VALUES('$_POST[titre]', '$_POST[lien]', '$_POST[description]',' $date')");
mysql_close($connection);
echo'information enregistrée
<a href="cree_rss.php">Revenir au formulaire</a>'
;
}

On a récupéré la date et inséré toutes les valeurs dans la base. Ensuite, on n'oublie pas de fermer la connection. Pour la forme, on affiche un petit mot pour dire que tout c'est bien passé et un lien pour revenir à la page de forlaire (qui est la même).

Voyons maintenant le formulaire proprement dit :

else{
?>
<form method="post" action="cree_rss.php">
Titre
<input method="post" name="titre" /><br/>
Lien
<input type="text" name="lien" /><br/>
Descriptions :<br/>
<textarea name="description" rows="7" cols="25"></textarea>
<br/>
<input type="reset" value="Reset" />&nbsp; &nbsp; &nbsp;
<input type="submit" value="Envoyer" />
<?php
}
mysql_close($connection);
?>
</body></html>

Comme promis, ce n'est qu'un simple formulaire qui renvoie à la page même.
N'oubliez pas les balises fermantes de la page et votre formulaire de remplissage de la base est terminé. Il ne nous reste plus qu'à nous attaquer à la partie la plus intéressante : le formulaire de création du flux.

En premier lieu, le header de la page:

<html><head>
<title>Creation du flux</title>
<meta name="robots" content="noindex" />
</head><body>

Rien de compliqué. On a mis la balise robots noindex pour être sûr qu'aucun robot n'indexera la page.
Passons maintenant au script :

<?php
$rss = '<?xml version="1.0" encoding="iso-8859-1"?>';
$rss .='<rss version="2.0">';
$rss .='<channel>';
$rss .='<title>mon_site</title>';
$rss .='<link>http://www.mon_site.be</link>';
$rss .='<description>Les news de mon site.</description>';
$rss .='<copyright>Copyright mon_site</copyright>';

Nous avons rentré les informations générales du script dans une variable appelée "$rss". Nous allons maintenant les récupérer en nous connectant à la base et en les écrivant dans la variable $rss.

$connection = mysql_connect("localhost", "root", "m_d_p");
if (!$connection) {
    die('Connexion impossible');
}
mysql_select_db("data_base");
$res = mysql_query("SELECT * FROM flux_rss ORDER BY date DESC LIMIT 0, 10");

Maintenant que nous avons demandé de selctionnner 10 news, il faut encotre les lister par une boucle qui va écrire ces informations dans la variable $rss.
C'est parti !


while($tab = mysql_fetch_array($res)){
        $titre = $tab['titre'];
        $lien = $tab['lien'];
        $description = $tab['description'];
        $date = $tab['date'];

        $rss .= '<item>';
        $rss .= '<title>'.$titre.'</title>';
        $rss .= '<link>'.$lien.'</link>';
        $rss .= '<pubDate>'.$date.' GMT</pubDate>';
        $rss .= '<description>'.$description.'</description>';
        $rss .= '</item>';     
}

Dans cette boucle, on récupère les informations du flux triées par date et on les stocke dans la variable $rss.

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

N'oubliez pas de fermer le flux qui, maintenant, se trouve entièrement stocké dans la variable $rss. Il faut alors l'écrire dans un fichier. Créez un fichier nommé rss.xml et uploadez-le.

:n'oubliez pas de le mettre en CHMOD 777

C'est parti pour le code:

$file = fopen("rss.xml", 'w+');
fwrite($file, $rss);
fclose($file);

Maintenant qu'on a écrit dans le fichier, le flux RSS est donc créé. N'oubliez pas de refermer la connection à la base lorsque le script est fini.

mysql_close($connection);

Voilà, votre flux RSS est créé à partir de votre base MySQL.

: ce script est composé de deux fichiers. Il serait peut être plus simple de n'en faire qu'un. Pour cela, il vous suffit de rajouter le code de création du flux dans la partie du formulaire qui écrit dans la base. Comme ca, après avoir posté votre news, elle s'enregistre dans la base et le fichier XML est automatiquement mis à jour. Vous n'avez pas besoin d'aller ouvrir une page spécifique pour créer le flux.


Creative Commons License
Sauf mention contraire, le contenu de cette page est sous licence Creative Commons
Page générée en 0.4443 secondes.
Retour en haut de la page
Imprimer cette page