Aller au contenu

Recuperation de donnees table SQL pour RSS


Sujets conseillés

Posté

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 ?

  • 2 semaines plus tard...
Posté

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

Posté

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 :

<?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

Posté

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

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...