[Aide] generer un flux rss a partir d'un fichier php ...

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
GregK84
Lézard à collerette
Messages : 360
Inscription : 15 oct. 2004, 15:24

[Aide] generer un flux rss a partir d'un fichier php ...

Message par GregK84 »

Salut,

je voudrais publier un flux rss a partir de php, les données sont dans ma db mysql.
Quand je créé mon fichier rss sans php, cela fonctionne, mais quand je fais une boucle en php cela ne fonctionne plus.

exemple : http://www.pspliberte.com/greg/site_sdav/index.php

mon fichier nomé : rss.php

Code : Tout sélectionner

<rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/">

<?php 
require("connect_sql.php");

$tablename = "ma table";
$today = Date("Ymd");
?>
  
  <!-- Données concernant le site -->
  <channel rdf:about="http://www.pspliberte.com/greg/site_sdav/index.php">
    <title>SDAV</title>
    <link>http://www.pspliberte.com/greg/site_sdav/index.php</link>
    <description>Site de l'Audeivisuel de la Province de Namur</description>
    <dc:language>fr</dc:language>
	
    <!-- Début de la Table des matières -->
	<items>
       <rdf:Seq>
         <!-- URL de chaque article -->
	       
			<?php
			$sql = "SELECT * FROM $tablename WHERE publish = 0 AND (publi_start <= '$today' AND publi_end >= '$today') ORDER BY publi_start DESC, title ASC";
			$result = mysql_query($sql) or die("ERREUR: La requête n'est pas valide: ".mysql_error());

			while ($test = mysql_fetch_object($result)) {
				print('<rdf:li resource="index.php?fuseaction=accueil.news_content&newsid='.$test->id.'" />');
			}
			?>
			   
       </rdf:Seq>
    </items>
    <!-- Fin de la Table des matières -->
  </channel>
			
    <!-- Début des Articles -->
			<?php
			
			$sql = "SELECT * FROM $tablename WHERE publish = 0 AND (publi_start <= '$today' AND publi_end >= '$today') ORDER BY publi_start DESC, title ASC";
			$result = mysql_query($sql) or die("ERREUR: La requête n'est pas valide: ".mysql_error());

			while ($test = mysql_fetch_object($result)) {
				print('<item rdf:about="index.php?fuseaction=accueil.news_content&newsid='.$test->id.'">');
				print('<title>'.$test->id.'</title>');
				print('<link>index.php?fuseaction=accueil.news_content&newsid='.$test->id.'</link>');
				print('<description>'.$test->desc.'</description>');
				print('</item>');
			}
			?>
			
	<?php mysql_close(); ?>
	
</rdf:RDF>
merci,
Gregk84
Firefox,
Time for the hunted to be the hunter.

Config : WinXp, FF 1.0, TB 1.0, SB 0.2.
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

Un fichier RSS ce n'est pas du HTML, mais du XML. Tu ne dois pas l'envoyer au format "text/html" :wink:

Comme tout fichier XML il faut le déclarer dans les entêtes http. PHP ne sait pas que ce qu'il va faire par la suite n'est pas du HTML. Il ne peut pas le deviner. Donc c'est toi qui doit le faire grâce à la fonction headers() :wink:

Code : Tout sélectionner

header("Content-Type: application/xml");
GregK84
Lézard à collerette
Messages : 360
Inscription : 15 oct. 2004, 15:24

Message par GregK84 »

calimo a écrit :Un fichier RSS ce n'est pas du HTML, mais du XML. Tu ne dois pas l'envoyer au format "text/html" :wink:

Comme tout fichier XML il faut le déclarer dans les entêtes http. PHP ne sait pas que ce qu'il va faire par la suite n'est pas du HTML. Il ne peut pas le deviner. Donc c'est toi qui doit le faire grâce à la fonction headers() :wink:

Code : Tout sélectionner

header("Content-Type: application/xml");
en gros, la premiere ligne de mon flux rss (qui est complet ci dessus) doit commencer par la ligne que tu as indiqué ?
Firefox,
Time for the hunted to be the hunter.

Config : WinXp, FF 1.0, TB 1.0, SB 0.2.
GregK84
Lézard à collerette
Messages : 360
Inscription : 15 oct. 2004, 15:24

Message par GregK84 »

voila, j'ai corrigé mon fichier et maintenant, mon flux rss fonctionne correctement.
par contre je suis confronté un un nouveau problème.
si j'ai le caractère "&" dans mon flux rss cela me crée une erreur.
dans les url, j'ai remplacé les caractères "&" par "&amps;" et je n'ai plus le problème, par contre, dans la description c'est autre chose, comme mon contenu provient d'un base de données il peut y avoir des caractères "&" comment corriger le problème ?

merci,
gregk84
Firefox,
Time for the hunted to be the hunter.

Config : WinXp, FF 1.0, TB 1.0, SB 0.2.
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

Chez moi il marche toujours pas, je pense que tu ne l'as pas encore modifié sur le serveur :wink:

Pour le & c'est un caractère très spécial vu qu'il indique le début d'une entité. Si tu veux un & alors il faut l'échapper en & comme tu l'as fait dans tes adresses, ou alors & si je ne me trompe pas :wink:
GregK84
Lézard à collerette
Messages : 360
Inscription : 15 oct. 2004, 15:24

Message par GregK84 »

je n'ai pas encore fais la misa a jur sur le serveur et pour les caractères & j'utilise l fonction php htmlspecialchars();
le tout encodé en utf8 pour les accents

voila,
je le placerai enligne se soir, mais pour le moment il tourne en local, c deja ca :D
Firefox,
Time for the hunted to be the hunter.

Config : WinXp, FF 1.0, TB 1.0, SB 0.2.
Xanthor
Lézard à collerette
Messages : 280
Inscription : 29 juil. 2003, 18:36

Message par Xanthor »

Il reste une erreur :
Remplace <rdf:li resource par <rdf:li rdf:resource
GregK84
Lézard à collerette
Messages : 360
Inscription : 15 oct. 2004, 15:24

Message par GregK84 »

merci de la remarque, je vais corriger :D
Firefox,
Time for the hunted to be the hunter.

Config : WinXp, FF 1.0, TB 1.0, SB 0.2.
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 6 invités