Forums d'assistance et de discussion sur les logiciels produits par Mozilla ou créés à partir des technologies Mozilla. Ce site ne dépend pas de la fondation Mozilla et est maintenu par un collectif de bénévoles.
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 !
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.
<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>
Un fichier RSS ce n'est pas du HTML, mais du XML. Tu ne dois pas l'envoyer au format "text/html"
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()
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"
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()
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 "&s;" 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 ?
Chez moi il marche toujours pas, je pense que tu ne l'as pas encore modifié sur le serveur
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
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