<?xml version="1.0" encoding="iso-8859-1"?> <rss version="2.0"> <channel> <title>Un titre</title> <description>News de mon site !</description> <link>http://news.monsite.org/</link> <item> <title>News 1</title> <description>Blablabla</description> </item> </channel> </rss>
/* On va placé notre flux dans une variable nommée variable (pas original mais clair), ce qui nous permettra d'enregistrer le tout dans un fichier */ <?php $variable = '<?xml version="1.0" encoding="iso-8859-1"?>' .'<rss version="2.0">' .'<channel>';
$variable = $variable.'<title>Mon premier flux RSS</title>' .'<description>News de mon site !</description>' .'<link>Adresse URL de mon site</link>';Ces balises sont assez explicites pour ne pas être expliquées en détails.
include_once('connexion.php'); // Inclusion de la connexion à MySQL // Requête SQL $sql = 'SELECT date_creation,titre,news FROM news ORDER BY date_creation DESC'; $query = mysql_query($sql, $dblink); // Envoi de la requête à la base de données while($fetch=mysql_fetch_array($query)) { $titre = $fetch['titre']; $news = StripSlashes($fetch['news']); /* Ici nous avions l'affichage de notre news, que l'on va remplacer par l'affichage de nos balises */ $variable = $variable.'<item>'; // Affichage de la balise de début de notre news $variable = $variable.'<title>'.$titre.'</title>'; .'<description>'.$news.'</description>'; .'</item>'; // Fermeture de la balise } /* Une fois que nos news sont affiché, la connexion à MySQL n'est plus utile */ mysql_close($dblink);
while($fetch=mysql_fetch_array($query)) { $titre = $fetch['titre']; $news = StripSlashes($fetch['news']); $date = date('M, d/m/Y', $fetch['date_creation']); $heure = date('H:i:s O', $fetch['date_creation']); $variable += '<item>'; // Affichage de la balise de début de notre news $variable += '<title>'.$titre.'</title>' .'<pubDate>'.$date.' '.$heure.'</pubDate>' .'<description>'.$news.'</description>' .'</item>'; // Fermeture de la balise } /* Une fois que nos news sont affiché, la connexion à MySQL n'est plus utile */ mysql_close($dblink);
$variable += '</channel>' .'</rss>';Maintenant on aimerait que ce soit un fichier .xml et non un fichier php qui aurait pour entête un fichier xml.
$fichier_xml = 'flux_news.xml'; // Nom du fichier .xml /* On ouvre en lecture et écriture grâce au paramètre w+ appliquée à la fonction fopen(); place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer. */ $fp=fopen($fichier_xml,"w+"); if ($fp) { if (fwrite($handle, $variable) === FALSE) { echo "Impossible d'écrire !"; exit; } } ?>
<?php $fichier_xml = 'flux_news.xml'; /* On place dans une variable le nom du fichier du flux RSS (celui que l'on a crée précédemment) pour pouvoir l'ouvrir */ $fp=fopen($fichier_xml,"r"); // Ouverture du fichier ( en lecture seule ) if ($fp) { $raw = fread($fp, filesize($fichier_xml)); /* Lis le fichier, filesize() retourne la taille du fichier */ fclose($fp); // Fermeture du fichier if(eregi("<item>(.*)</item>",$raw,$rawitems)) { $items = explode("<item>", $rawitems[0]); /* Avec la fonction explode on coupe notre chaîne pour créer un tableau contenant nos news */ $nb = count($items); // On compte le nombre de news // Tant que l'on a pas atteint le nombre maximum on incrémente i for($i=0; $i<$nb; $i++) { eregi("<title>(.*)</title>",$items[$i+1], $titre); /* On place le contenu qui est entre la balise title dans la variable titre */ eregi("<description>(.*)</description>",$items[$i+1], $news); eregi("<pubDate>(.*)</pubDate>",$items[$i+1], $pubDate); // Ici on récupère la date dans notre format $date[0] = strtok($pubDate[0], ' '); $date[1] = strtok(' '); /* Sur la deuxième utilisation de strtok on n'utilise pas le nom * de la variable, $date[1] ne sera pas utilisée mais on doit décalée * une fois pour récupérer l'heure */ $heure = strtok(' '); echo '<strong>'.$titre[1].'</strong> ajouté le '.$date[1].' à '.$heure; echo '<br />'.$news[1]; echo '<br /><br />'; } } } ?>
<?php /* Création de l'entête XML */ $variable = '<?xml version="1.0" encoding="iso-8859-1"?>' .'<rss version="2.0">' .'<channel>'; $variable = $variable.'<title>Mon premier flux RSS</title>' .'<description>News de mon site !</description>' .'<link>Adresse URL de mon site</link>'; /* Inclusion du fichier de connexion MySQL */ include_once('connexion.php'); // Requête SQL $sql = 'SELECT date_creation,titre,news FROM news ORDER BY date_creation DESC'; $query = mysql_query($sql, $dblink); // Envoi de la requête while($fetch=mysql_fetch_array($query)) { $titre = $fetch['titre']; $news = StripSlashes($fetch['news']); $date = date('M, d/m/Y', $fetch['date_creation']); $heure = date('H:i:s O', $fetch['date_creation']); $variable = $variable.'<item>'; $variable = $variable.'<title>'.$titre.'</title>' .'<pubDate>'.$date.' '.$heure.'</pubDate>' .'<description>'.$news.'</description>' .'</item>'; } /* Fermeture du lien MySQL */ mysql_close($dblink); $variable = $variable.'</channel>' .'</rss>'; $fichier_xml = 'flux_news.xml'; // Nom du fichier .xml /* On ouvre en lecture et écriture grâce au paramètre w+ appliquée à la fonction fopen(); place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer. */ $fp=fopen($fichier_xml,"w+"); if ($fp) { if (fwrite($fp, $variable) === FALSE) { echo "Impossible d'écrire !"; exit; } } ?>
Inscrire un commentaire