Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
739 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Génerer un xml (rss) a partir d'une base de données mySQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Génerer un xml (rss) a partir d'une base de données mySQL

n°1505397
gloun
Posté le 20-01-2007 à 20:46:45  profilanswer
 

hello

 

j'ai voulu, a partir de ma base de données news, générer un rss avec la methode de cet article:

 

http://ghostdogpr.developpez.com/articles/rss/

 


j'ai tout le temps des erreurs de type invalid character ou whitespace not allowed here.

 


le code est le suivant :

 
Code :
  1. $build_xml='<?xml version="1.0" encoding="UTF-8"?>
  2. <rss version="2.0">
  3. <channel>
  4. <title>Le flux des niouzes du mobil12</title>
  5. <link>http://mobil12.my-underworld.net</link>
  6. <description>Le flux des niouzes du mobil12</description>';
  7. $db = mysql_connect('', '', '');
  8. mysql_select_db('mobil12',$db);
  9. $sql_allniouzes='SELECT * FROM m12_news  ORDER BY date DESC';
  10. $req_allniouzes=mysql_query($sql_allniouzes) or die('Erreur SQL !<br>'.$sql_allniouzes.'<br>'.mysql_error());
  11. while ($rep_allniouzes=mysql_fetch_array($req_allniouzes))
  12.  {
  13.  $build_xml.='<item>';
  14.  $build_xml.='<title>'.$rep_allniouzes['title'].'</title>';
  15.  //$build_xml.='<title>TEST</title>';
  16.  $build_xml .= '<link>'.'mobil12.my-underworld.net/niouzes.php'.'</link>';
  17.  $build_xml .= '<pubDate>'.date("D, d M Y H i s",$rep_allniouzes['date']).' +0200</pubDate>';
  18.  $build_xml .= '<description>'.$rep_allniouzes['content'].'</description>';
  19.  //$build_xml .= '<description>TEST</description>';
  20.  $build_xml.='</item>';
  21.  }
  22. $build_xml.='</channel></rss>';
  23. // écriture dans le fichier
  24. $fp = fopen("../../niouzes.xml", 'w+');
  25. fputs($fp, $build_xml);
  26. fclose($fp);
  27. mysql_close();
 


si je remplace les balises description et titre par celles actuellement desactivées : //; ca marche. donc le probleme vient bien de l'information renvoyée par la base.

 


j'ai essayé un $build_xml.='<title>'.utf8_encode($rep_allniouzes['title']).'</title>';
mais j'obtiends exactement le meme resultat . de toute maniere la base semble etre en utf8-unicode-ci a ce que j'en vois , (jy comprends pas grand chose en collationnement et tous ces trucs...)

 


donc est ce que quelqu'un a une idée de comment inscrire en utf8 propre dans le fichier pour que celui ci soit accepté?  

 

Accessoirement, comment sont codés les retours a la ligne dans le fichier ? actuellement mon fichier xml est donc un gros paté. or si je regarde des exemples de fichiers rss sur le net , ils sont indentés directement dans le fichier.

 

merci bcp je m'arrache les cheveux .


Message édité par gloun le 20-01-2007 à 22:38:17

---------------
c'est koi l'enroule ici ?  
mood
Publicité
Posté le 20-01-2007 à 20:46:45  profilanswer
 

n°1505432
gloun
Posté le 20-01-2007 à 22:45:57  profilanswer
 

:o

n°1505906
omega2
Posté le 22-01-2007 à 14:37:24  profilanswer
 

Un fichier rss est un format de fichier xml. Utilise plustôt ce qui est fait pour créer facilement de genre de fichier : les fonctions xml par exemple : http://fr3.php.net/manual/fr/ref.xml.php .
Avec ça, tu ne devrais plus avoir ce genre de probléme. Par contre, ca te prendra peut être un peu plus de temps au début le temps de comprendre comment ca marche.

n°1507611
nabbo
Posté le 26-01-2007 à 19:43:52  profilanswer
 

hello

 

pour indenter : on rajoute "\n" à la fin des lignes, c'est un bon début. on peut aussi mettre des "\t", ca fait raffiné ;-)

 

pour les caractères spéciaux : moi je les rentre dans des CDATA.

 

je suis pas sûr que ca soit fait pour ca, mais ca a l'air de marcher...

  
Code :
  1. while ($rep_allniouzes=mysql_fetch_array($req_allniouzes))
  2.  {
  3.  $build_xml.='<item>' . "\n";
  4.                 $build_xml.='<title><![CDATA['.$rep_allniouzes['title'].']]></title>' . "\n";
  5.  $build_xml .= '<link>'.'mobil12.my-underworld.net/niouzes.php'.'</link>' . "\n";
  6.  $build_xml .= '<pubDate>'.date("D, d M Y H i s",$rep_allniouzes['date']).' +0200</pubDate>' . "\n";
  7.  $build_xml .= '<description><![CDATA['.$rep_allniouzes['content'].']]></description>' . "\n";
  8.  $build_xml.='</item>' . "\n";
  9.  }
 


dernier point, perso j'encode en iso-8859-1.

 

voilà


Message édité par nabbo le 26-01-2007 à 19:48:58

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Génerer un xml (rss) a partir d'une base de données mySQL

 

Sujets relatifs
faire tableau avec des donnees recuperees d'un file xml[Réglé] [MySQL] Requête qui ne retourne pas toutes les news...
[OK] Erreur Oracle Lien de base de données[MySQL v5] [Procédure Stockée] construire une requête dynamique ?
[JAVA/JSP] Formulaire JSP/Servlet - Conservations de données [Resolu][REGLE]Gestion base de donnée Access
Manipuler des données XMLExport données Excel vers Mysql
Plus de sujets relatifs à : Génerer un xml (rss) a partir d'une base de données mySQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR