Erreur sur un fichier RSS/php

Eléphanteau du PHP | 31 Messages

15 janv. 2009, 17:34

Bonjour,

Voici le code d'une page PHP qui me permet de générer un fichier rss.xml contenant mon flux rss.
Mais il semble qu'il y a une erreur, et je n'arrive pas à voir laquelle.

Merci pour votre aide.
<?php
    
		$xml = '<?xml version="1.0" encoding="iso-8859-1"?>';
		$xml .= '<rss version="2.0">';
		$xml .= '<channel>';
		$xml .= '<title>Titre</title>';
		$xml .= '<link>http://www.url.com</link>';
		$xml .= '<description>Blabla</description>';
		$xml .= '<copyright>(c) 2009 Blabla</copyright>';

    require('config.php'); // connexion à la BDD
    
    $q = mysql_query("SELECT * FROM temoignages WHERE validation=1 ORDER BY ID DESC LIMIT 0,4");

    while($r = mysql_fetch_array($q)){
        $titre = $r['titre_texte'];
        $titre = stripslashes(htmlentities($titre));
		$id=$r['ID'];
		$description=substr(stripslashes(htmlentities($r['texte'])),0,300);
		
        $xml .= '<item>';
        $xml .= '<title>'.$titre.'</title>';
        $xml .= '<link>http://www.url.com/index.php?order=select&idselect='.$id.'</link>';
		$xml .= '<description>'.$description.'</description>';
        $xml .= '</item>';
    }

    $xml .= '</channel>';
    $xml .= '</rss>';
	
	
	$fp = fopen("rss.xml", 'w+');
	fputs($fp, $xml);
	fclose($fp);
	@mysql_close();

?>

Mammouth du PHP | 1353 Messages

15 janv. 2009, 18:02

Salut pourrais tu etre plus spécifique et expliquer ce qui ne va pas ?
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphanteau du PHP | 31 Messages

15 janv. 2009, 18:11

Eh bien en fait il y a eu une évolution :)

J'imagine que mon lecteur de RSS (netvibes en l'occurrence) n'avait pas encore actualisé les changements.

En revanche, une erreur persiste, il n'arrive pas à bien interpréter la ligne <link>

Il me donne comme lien, par ex :

http://www.monurl.com/index.php?order=select=121

au lieu de :

http://www.monurl.com/index.php?order=s ... select=121

ViPHP
ViPHP | 2287 Messages

15 janv. 2009, 19:07

En revanche, une erreur persiste, il n'arrive pas à bien interpréter la ligne <link>
Il me donne comme lien, par ex :

http://www.monurl.com/index.php?order=select=121
au lieu de :

http://www.monurl.com/index.php?order=s ... select=121
L'erreur et sa solution vont te sauter aux yeux quand tu ouvriras ton RSS directement dans un navigateur (en mode XML, pas en mode RSS)
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

15 janv. 2009, 22:05

Il faut effectivement savoir que le "&" est un caractère d'échappement destiné à indiquer que les caractères suivants jusqu'au premier point-virgule rencontré servent à l'affichage d'une entité (x)html. Cela a pour conséquence d'empêcher la validation de ton flux xml lorsque tu utilises les & sans les protéger.

Pour afficher une esperluette dans un fichier xml sans que la gestion des entités soit enclenchée, il faut la remplaçer par l'entité " & " :)

La méthode de Calimero pour tester la validité d'un flux ou d'un fichier xml est à noter par contre. Le navigateur va effectivement t'indiquer immédiatement si le xml est valide et dans le cas contraire, la ligne ou l'élément posant problème :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 31 Messages

16 janv. 2009, 09:56

Merci pour votre aide !