Page 1 sur 1

Creation d'un flux RSS

Posté : 07 févr. 2009, 11:21
par Nad21
Bonjour
j'ai recupéré un scrpt pour créer un flux RSS a partir d'une base de données
Je l'ai adapté a ma BDD, les connexions se font bien, a priori l'export xml se fait bien mais des que je veux visionner le fichier xml crée la page est vide et il y a une "erreur de code flux"
Je ne comprends pas ou est l'erreur, donc si quelqu'un a une piste?
merci
Nadege
<?php
 $xml = '<?xml version="1.0" encoding="UTF-8"?>';
 $xml .= '<rss version="2.0">'; 
 $xml .= '<channel>'; 
 $xml .= '<title>titre</title>';
 $xml .= '<link>http://www.monsite.com/test/</link>';
 $xml .= '<description>des</description>';
 $xml .= '<copyright>monsite</copyright>';
 $xml .= '<language>fr</language>';
 $xml .= '<image>';
 $xml .= ' <title>Titre du flux</title>';
 $xml .= ' <url>http://www.monsite.com/test/img/rss.jpg)</url>';
 $xml .= ' <link>http://www.monsite.com/test/</link>';
 $xml .= '</image>';
 $today= date("D, d M Y H:i:s +0100");
 //date du jour d'execution du fichier PHP
 $xml .= '<pubDate>'.$today.'</pubDate>';
 require ('parametres/param.php');
  // appel base de données
  $resultat_requete=mysql_query("SELECT * FROM formations_ent ORDER BY id DESC limit 0, 10");
    // extraction des 10 dernières nouvelles
  while($lig=mysql_fetch_assoc($resultat_requete)){ 
  //echo $lig["titre"]; ca fonctionne
    $titre=$lig["titre"];
    $adresse=$lig["objectif"];
    $date=$lig["date"];
    $datephp=date("D, d M Y H:i:s +0100", $date);
    $xml .= '<item>';
    $xml .= '<title>'.$titre.'</title>';
    $xml .= '<link>'.$adresse.'</link>';
    $xml .= '<pubDate>'.$datephp.'</pubDate>'; 
    $xml .= '<description>'.$contenu.'</description>';
    $xml .= '</item>'; 
  }//fin du while
  $xml .= '</channel>';
  $xml .= '</rss>';
  
  $fp = fopen("fluxrss.xml", 'w+');
  fputs($fp, $xml);
  fclose($fp);
  
  echo 'Export XML effectue !<br /><a href="fluxrss.xml">Voir 
  le fichier</a>';// c'est en cliquant sur voir le fichier que j'ai une page vierge avec message d'erreur
  ?>

Posté : 07 févr. 2009, 12:02
par @rthur
Bonjour,

Donne nous le XML généré (si tu arrives à le voir en regardant la source) ainsi que le message d'erreur ;)

Posté : 07 févr. 2009, 12:34
par jojolapine
Donne nous le XML généré (si tu arrives à le voir en regardant la source) ainsi que le message d'erreur ;)
Si ça ne marche pas , tu faits echo $xml à la fin de ton script ;)

Posté : 07 févr. 2009, 12:58
par Nad21
voici ce que m'affiche le message d'erreur
Un caractère incorrect a été trouvé dans un contenu de texte.
Ligne : 1 Caractère : 85

<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Titres, int

j'ai enlevé la virgule et ca marche
par contre moi dans mes titres j'ai des virgules !!!
y a t'il un moyen de faire autrement?
merci

Posté : 07 févr. 2009, 14:06
par @rthur
Curieux pour les virgules...
Essaye de faire un utf8_encode() sur tes titres pour voir si ça passe mieux

Posté : 07 févr. 2009, 14:51
par fab
Petit conseil au passage il existe dans PHP des fonctions pas assez connues je trouve qui sont très pratique pour créer des fichiers XML ::
http://fr3.php.net/xmlwriter

Posté : 07 févr. 2009, 14:52
par Nad21
EN fait j'ai trouvé le hic
j'ai bien tout mis en utf8_encode
mais c'est le titre qui buggué avec 2 accents
maintenant ca fonctionne
merci
J'aurai appris qqchose aujourdh'ui

Posté : 07 févr. 2009, 19:30
par Sethpolma
En règle général, comme te l'as conseillé fab, essaye d'utiliser des classes prédéfinies, telles que SimpleXML, DomDocument ou encore XMLWriter. Elles ont été conçues par un grand nombre de développeurs, et seront donc bien plus optimisées pour ce que tu désires faire. :)