Version complète: sur le forum Webmaster Hub : Recuperation de donnees table SQL pour RSS
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > XML et ses dialectes
doomer2
Bonjour, je possede une table dont la structure est la suivante :

CREATE TABLE `table_news` (
`id` bigint(9) NOT NULL auto_increment,
`news_date` varchar(50) NOT NULL default '',
`news_heure` time NOT NULL default '00:00:00',
`news_objet` varchar(255) NOT NULL default '',
`news_texte` blob NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM;


Et je voudrais crer un fil RSS dynamique qui permet de mettre mais nouvelles infos à jour automatiquement.

Quelqu'un sait il comment faire ?
doomer2
Le but est de récuperer mes données et de creer mon fichier xml dynamiquement.

Une personne pourrait elle m'aider à réaliser cela en sachnat que je suis le seul redacteur sur le site et que ma table est decrite sur le post au dessus.

Merci
Findel
Voilà un bout de code, je pense qu'il devrait faire l'affaire, à toi de l'adapter pour le manquant, en sachant que perso j'ai un champ 'date' qui contient la date de publication de la news au format timestamp (généré par un time() en php).

Il faut aussi que tu remplace les passages entre accolades :

CODE
<?php
   $fichierrss = './news.rss';

   // recup de la date de la news la plus recente
   $lastrss = time();
   if ($requete = _AT_mysql_query('SELECT MAX(date) AS date FROM news')) {
       list($lastrss) = _AT_mysql_fetch_row($requete);
   }

   // generation du fichier rss
   $rss = fopen($fichierrss, 'w');
   fwrite($rss, '<'.'?xml version="1.0" encoding="iso-8859-15" ?'.'>
<rss version="2.0">
<channel>
 <title>{Titre du site} - News</title>
 <link>{Url vers les news de ton site}</link>
 <description>{Description du fil RSS}</description>
 <language>fr</language>
 <pubDate>'.date('r', $lastrss).'</pubDate>
 <lastBuildDate>'.date('r').'</lastBuildDate>
');

   // boucler sur les news pour générer un entrée pour chacune
   if ($requete = _AT_mysql_query('SELECT * FROM news ORDER BY date DESC LIMIT 0, 30')) {
       while ($news = _AT_mysql_fetch_assoc($requete)) {

           // au cas ou y'aurait des caracteres incompatibles avec XML
           $news['news_objet'] = htmlspecialchars($news['news_objet']);
           $news['news_texte'] = htmlspecialchars($news['news_texte']);

           fwrite($rss, '  <item>
  <title>'.$news['news_objet'].'</title>
  <author>{Auteur des news}</author>
  <link>{Lien direct vers la news sur ton site}</link>
  <description>'.$news['news_texte'].'</description>
  <pubDate>'.date('r', $news['date']).'</pubDate>
  <guid>{Lien direct vers la news sur ton site}</guid>
 </item>
');

       }
   }

   fwrite($rss, ' </channel>
</rss>');
   fclose($rss);
?>


Ensuite, il te restera à ajouter ceci sur tes pages de news et d'accueil :

<link rel="alternate" type="application/rss+xml" title="{Nom du site} - News" href="/news.rss" />

Si on considère que le fichier aura été généré à la racine du site
doomer2
Ce bout de code PHP est à ajouté au moment ou je créé une nouvelle news ?
Findel
Yep, à chaque fois que tu ajoute un news, après l'avoir enregistrée, tu execute ce code pour générer un ficheir qui contiendra les 30 dernieres news. Ca sera "un fichier cache" vers lequel les clients viendront se connecter
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.