creation de syndication au format rss 2.0 stricte
Par aurelien gerits le vendredi, 28 août 2009, 19:40 - manipulation de xml - Lien permanent

La création d'un fil RSS classique à déjà été évoquée et le système à bien évoluer depuis.
Le principe étais assez simple, une fonction permettais la génération d'un fichier XML avec un paramétrage très simpliste.
Les tests , les conditions étais très réduite ce qui peux conduire à quelques erreurs lors de la création du fichier.
La fonction iniXmlRsswrite() est retiré pour être remplacer par une série de fonction qui génère un fichier XML valide W3c au format RSS 2.0.
Je précise le type du format car on peux aussi effectué une création de syndication au format atom.
Le prochain tutoriel se penchera probablement sur le sujet.
La classe RSS vous aidera à réaliser toutes vos syndications RSS, pour l'utiliser rien de plus simple.
Principe de base
/*On instance la classe*/
$rss = new magixcjquery_xml_rss();
/*On demande de vérifier si le fichier existe et si pas on le crée*/
$rss->createRSS('rss.xml');
/*On ouvre le fichier*/
$rss->openFileRSS('rss.xml');
/*On demande une indentation automatique (optionnelle)*/
$rss->indentRSS(true);
/*On écrit l'entête avec l'encodage souhaité*/
$rss->startWriteRSS('utf-8');
/*On crée notre élément ou article RSS*/
$rss->elementWriteRSS('test','2009-08-19','test','.html',"<b>salut</b> vous allez bien ? l'argent est rentré");
/*On ferme les noeuds*/
$rss->endWriteRSS();
Bien entendu pour utiliser mysql le principe est très simple, l'exemple de création d'un fil RSS classique avec mysql est légèrement modifié.
Fil RSS 2.0 avec mysql
Table SQL
CREATE TABLE `news` (
`id_news` int(11) NOT NULL AUTO_INCREMENT,
`sujet` varchar(255) NOT NULL,
`texte` text NOT NULL,
`news_date` timestamp NOT NULL,
PRIMARY KEY (`id_news`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
La requête avec magixDB
/*On charge l'abstraction*/
$layer = new magixcjquery_magixdb_layer();
/*On fais notre requête SQL*/
$info = $layer->select("SELECT * FROM news");
Ensuite, on peux créer notre fichier avec les données de notre table news
/*On instance la classe*/
$rss = new magixcjquery_xml_rss();
/*On demande de vérifier si le fichier existe et si pas on le crée*/
$rss->createRSS('rss.xml');
/*On ouvre le fichier*/
$rss->openFileRSS('rss.xml');
/*On demande une indentation automatique (optionnelle)*/
$rss->indentRSS(true);
/*On écrit l'entête avec l'encodage souhaité*/
$rss->startWriteRSS('utf-8');
/*On crée nos éléments ou articles RSS avec une boucle simple*/
foreach ($info as $tab){
$rss->elementWriteAtom($tab['sujet'],$tab['date_news'],$tab['sujet'],'.html',$tab['texte']);
}
/*On ferme les noeuds*/
$rss->endWriteRSS();




