Creation d'un flux RSS

Eléphant du PHP | 109 Messages

07 févr. 2009, 11:21

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

07 févr. 2009, 12:02

Bonjour,

Donne nous le XML généré (si tu arrives à le voir en regardant la source) ainsi que le message d'erreur ;)
Quand tout le reste a échoué, lisez le mode d'emploi...

ViPHP
ViPHP | 3607 Messages

07 févr. 2009, 12:34

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 ;)

Eléphant du PHP | 109 Messages

07 févr. 2009, 12:58

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

07 févr. 2009, 14:06

Curieux pour les virgules...
Essaye de faire un utf8_encode() sur tes titres pour voir si ça passe mieux
Quand tout le reste a échoué, lisez le mode d'emploi...

ViPHP
fab
ViPHP | 2657 Messages

07 févr. 2009, 14:51

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
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Eléphant du PHP | 109 Messages

07 févr. 2009, 14:52

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

Petit nouveau ! | 6 Messages

07 févr. 2009, 19:30

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. :)
Sethpolma (Jonathan Petitcolas)