Flux RSS dynamique lol

WRInaute passionné
Salut,

Hier je me dis "tiens pour ma V2", je vais ajouter des flux RSS.

Alors je trouve cette page sur un tuto web, je la copie colle et je me dis "ok super c'est bon".

Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0">
    <channel>
   
        <title>Mon site web</title>
        <link>http://monsiteweb.com</link>
        <description>Les news de mon site web</description>
      
        <item>
            <title>Un site web pour partager ses signets</title>
            <link>http://del.icio.us</link>
            <guid isPermaLink="true">http://del.icio.us</guid>
            <description>Le site http://del.icio.us permet de partager vos signets et d'y accéder où que vous soyez.</description>
            <pubDate>Wed, 5 Aug 2005 19:30:00 GMT</pubDate>
        </item>
       
        <item>
            <title>Enfin un flux RSS !</title>
            <link>http://monsiteweb.com/rss.html</link>
            <guid isPermaLink="true">http://monsiteweb.com/rss.html</guid>
            <description>Un flux RSS a été installé sur mon site. Vous pouvez le consulter avec votre logiciel favori.</description>
            <pubDate>Wed, 3 Aug 2005 15:17:00 GMT</pubDate>
        </item>
       
    </chan
nel>
</rss>

Eh eh oui, mais comment je fais maintenant pour afficher les dix derniers sujets du forum, ce qui nécessite à priori une requête SQL, alors que je ne peux pas utiliser de php dans une page rss ? :lol:
 
WRInaute accro
soit en générant ta page RSS par une page php toutes les X minuts, soit carrement en rewritant ta page rss vers une page php qui crée le flux en temps réel à chaque appel par exemple
 
WRInaute passionné
Merci pour ta réponse e-kimi.

Alors je ne vois pas comment rewriter une page sans variable. Par exemple là, ma page c'est forum.rss. Comment je peux lui attribuer l'extension PHP (tout mon site est rewrité, je n'ai pas besoin d'un cours sur le sujet, mais là je ne vois pas).

Je ne vois pas non plus ce que tu veux dire par "générer ma page rss via une page php".
 
WRInaute accro
solution 1)
avec un script php, tu crée physiquement le fichier rss sur le serveur :

fopen("truc.xml","..")
fputs("ton contenu","..")
fclose();


solution 2 )
rewrite ^forum.rss$ forum.php
comme ça l'appel au flux rss redirige vers une fichier php où tu fais le echo de ton flux xml
ta page forum.php : echo <?xml>... ... ...
 
WRInaute passionné
il y a deux solutions :
- soit tu crées une page forum.rss a partir d'un script php à chaque modification de contenu
- soit tu crées un script forum-rss.php qui retourne le contenu avec une règle de rewriting :
Code:
RewriteRule ^forum\.rss$  /forum-rss.php [L]
le plus performant étant de générer ton fichier rss a chaque changement de contenu
 
WRInaute passionné
Attendez, attendez... Déjà pour afficher le flux RSS, faut-il obligatoirement que la page du flux soit au format .rss ?

Ou peut-on afficher un flux rss généré par une page du type fluxrss.php ?
 
WRInaute impliqué
Meeuuuhhh a dit:
Attendez, attendez... Déjà pour afficher le flux RSS, faut-il obligatoirement que la page du flux soit au format .rss ?

non
tu peux mettre .tartanpion si tu veux
tu confonds le format (qui lui doit etre en syntaxe conforme au rss) et l'extension du fichier .rss/.php/.truc

Ou peut-on afficher un flux rss généré par une page du type fluxrss.php ?

Oui

regarde les blogs dotclear par défault le flux rss c'est /rss.php
 
WRInaute passionné
Ouais, ok... Alors j'ai essayé un truc, mais c'est pas concluant :oops:

Ca c'est le code de ma page forum_rss.php :
Code:
<?php
header('Content-Type: text/xml; charset=UTF-8');
//le script de connexion à la base

require_once('./../scripts/connexion.php') 
 ?>
 
<?php 
echo'<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0">
';
echo '<channel>'; 
echo '<title>Titre du channel</title>';
echo'<link>http://www.monsite.com</link>';
echo '<description>Description du channel</description>';
?>

<?php
$req="SELECT id, dernierMessageTitre FROM forum ORDER BY id DESC";
$res=mysql_query("$req");
while($tab=mysql_fetch_array($res)){   
	$titre=$tab['dernierMessageTitre'];
	echo '<item>';
	echo'<title>'.$titre.'</title>';
	echo '</item>';	
;}
?>

<?php
// édition de la fin du fichier XML
$xml .= '</channel>';
$xml .= '</rss>';
?>

Au début, je n'avais pas écrit la première ligne, indiquée par webmasterlamogere.
Ca m'affichait l'url de la page suivie de la balise description en haut, soit "Description du channel".

Alors j'ai rajouté la ligne en question, mais là ça m'affiche en gros :

Erreur d'analyse XML : instruction de traitement XML pas au début d'une entité externe
Emplacement : http://www.site.com/forum_rss.php

Numéro de ligne 2, Colonne 1 :<?xml version="1.0" encoding="iso-8859-1"?>

La ligne 2 en fait c'est celle du commentaire :
//le script de connexion à la base


Alors, vous en pensez-quoi, honorables collègues webmasters ?
 
WRInaute passionné
Ca fonctionne, merci (je pensais à un truc plus dur, du coup j'ai pas vu l'évidence). Du moins ça a l'air, j'ai pas essayé de l'afficher encore.


Euh, comment je vais pour ajouter un lien depuis le titre.

En fait dans le flux, je veux que le titre du message avec un lien direct. J'ai essayé d'ajouter un <a href> mais ça efface tout.
 
WRInaute impliqué
dans ton while
j'ajoute une balise <link> comme je te montre ci dessous

Code:
   echo '<item>';
   echo '<title>'.$titre.'</title>';
   echo '<link>'.$lien vers ta page http://wqdfqsdqsd.'</link>'
   echo '</item>';
 
WRInaute passionné
Ok, en fait, je n'avais pas écrit l'url au complet avec http:// etc...

Maintenant la page s'affiche bien, du moins la page forum_rss.php

Parce que si j'essaie d'afficher le flux pour de bon, j'obtiens cette erreur là :

Code:
Warning: MagpieRSS: Failed to fetch http://www.site.com/forum_rss.php (HTTP Response: HTTP/1.1 401 Authorization Required ) in /home.10.13/site/www/magpiemod/rss_fetch.inc on line 238

J'ai essayé de valider le flux, voir s'il est correct, mais j'obtiens ces erreurs :
Sorry

This feed does not validate.

*

line 4, column 1542: XML parsing error: <unknown>:5:0: no element found [help]

... site.com/forum-1.php</link></item>
^

In addition, interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

*

Your feed appears to be encoded as "iso-8859-1", but your server is reporting "UTF-8" [help]


*

line 4, column 80: item should contain a guid element (19 occurrences) [help]

<item><title>test B</title><link>http://www.site.com/forum-19.php</l ...
^

*

line 4, column 187: title should not be blank (17 occurrences) [help]

... /forum-18.php</link></item><item><title></title><link>http://www.site ...
 
WRInaute accro
Meeuuuhhh a dit:
Code:
<?php
header('Content-Type: text/xml; charset=UTF-8');
[...]
echo'<?xml version="1.0" encoding="iso-8859-1"?>

Cohérence, quand tu nous tiens...

Evidemment, au delà de dire que le charset c'est l'un ou l'autre, il faut que le contenu soit bien encodé en utilisant le charset indiqué, hein...

Jacques.
 
WRInaute passionné
tu peux donner l'url du flux ?
Je peux pas parce que c'est en développement, derrière un .htaccess.



Cohérence, quand tu nous tiens...

Evidemment, au delà de dire que le charset c'est l'un ou l'autre, il faut que le contenu soit bien encodé en utilisant le charset indiqué, hein...

Jacques.
oui elle m'avait semblé douteuse cette ligne là. :lol:
D'ailleurs quel est le mieux ? UTF ou iso ?

En tout cas, j'ai toujours la même erreur à l'affichage :
Warning: MagpieRSS: Failed to fetch http://www.site.com/forum_rss.php (HTTP Response: HTTP/1.1 401 Authorization Required ) in /home.10.13/site/www/magpiemod/rss_fetch.inc on line 238
 
WRInaute impliqué
Meeuuuhhh a dit:
Je peux pas parce que c'est en développement, derrière un .htaccess.

En tout cas, j'ai toujours la même erreur à l'affichage :
Warning: MagpieRSS: Failed to fetch http://www.site.com/forum_rss.php (HTTP Response: HTTP/1.1 401 Authorization Required )

Tu viens de donner la solution, ton site de dev est protégé derrière un htaccess
donc c'est normal que ton magpieRss n'arrive pas à y accéder.
c'est clairement indiqué dans le message d'erreur (HTTP Response: HTTP/1.1 401 Authorization Required)
Ton magpieRss essait d'établir une connexion http vers ton flux rss mais il est bloqué par ton htaccess car il n'a pas l'autorisation.

D'ailleurs quel est le mieux ? UTF ou iso ?

c'est pas une question de mieux ou pas.
tout dépend en quoi son stocker tes caractères dans ta base de données.
ca on peut pas te le dire
il faut que tu regardes le charset de ta bdd ou de tes tables et l'interclassement par défautl.
 
WRInaute accro
Meeuuuhhh a dit:
tu peux donner l'url du flux ?
Je peux pas parce que c'est en développement, derrière un .htaccess.
[...]
En tout cas, j'ai toujours la même erreur à l'affichage :
Warning: MagpieRSS: Failed to fetch http://www.site.com/forum_rss.php (HTTP Response: HTTP/1.1 401 Authorization Required ) in /home.10.13/site/www/magpiemod/rss_fetch.inc on line 238

Le premier explique évidemment le deuxième...

Meeuuuhhh a dit:
Cohérence, quand tu nous tiens...

Evidemment, au delà de dire que le charset c'est l'un ou l'autre, il faut que le contenu soit bien encodé en utilisant le charset indiqué, hein...
oui elle m'avait semblé douteuse cette ligne là. :lol:
D'ailleurs quel est le mieux ? UTF ou iso ?

Celui que tu utilises... Comme je disais, il faut que le charset indiqué corresponde à celui que tu utilises (dans ton code PHP, dans ta base de données, dans ton HTML et les headers HTTP qui vont avec...), c'est pas là juste pour la décoration.

Sinon dans l'absolu le mieux c'est l'UTF-8, puisque tu peux encoder n'importe quel caractère (y compris du cyrillique, de l'arabe, des accents un peu bizarres, du chinois, du japonais...), tandis que l'ISO-8859-1 est limité aux caractères employés en Europe de l'Ouest (et ne contient même pas le symbole "Euro", pour ça il faut au minimum ISO-8859-15 ou windows-1252, qui ne sont pas compatibles, le symbole Euro n'a pas le même code).

Jacques.
 
WRInaute passionné
Ok, bah je vais rester en Iso.

Ceci dit le premier n'explique pas le deuxième car j'essaie d'afficher le flux rss sur le site lui-même et d'ailleurs sur ce site j'affiche des flux youtube, même derrière le .htaccess.

Donc j'ai pas la solution là.
 
WRInaute accro
Meeuuuhhh a dit:
Ok, bah je vais rester en Iso.

Ceci dit le premier n'explique pas le deuxième car j'essaie d'afficher le flux rss sur le site lui-même et d'ailleurs sur ce site j'affiche des flux youtube, même derrière le .htaccess.

Donc j'ai pas la solution là.

Si tu veux dire que ton lecteur de flux RSS (MagpieRSS) est lui aussi protégé par le .htaccess, ça n'a pas grande importance dans cette histoire. Le problème c'est qu'il n'arrive pas à accéder au flux RSS (protégé par .htaccess). Comme tu lui donnes l'accès via une URL (http...) il n'a aucune idée que le flux est local, donc il passe par les mécanismes habituels de httpd...

Jacques.
 
WRInaute passionné
Ah ok, j'ai compris...

Je vois pas trop comment ça fonctionne ces histoires de réseaux, j'ai pas pris de cours sur ça.

En tout cas, ça fonctionne là, j'ai réussi à afficher les flux en effaçant provisoirement le .htaccess.


Je vais finir la V2 derrière apache et puis quand elle sera vraiment en ligne, je me repencherai sur les flux RSS parce que là pour les tests ça va être trop difficile.

En tout cas, ça a l'air de fonctionner (j'irais pas jusqu'à dire que j'ai tout pigé, tant c'est du bricolage au coup par coup, mais bon, ça fonctionne).


Merci à vous tous :)
 
WRInaute accro
Meeuuuhhh a dit:
En tout cas, ça a l'air de fonctionner (j'irais pas jusqu'à dire que j'ai tout pigé, tant c'est du bricolage au coup par coup, mais bon, ça fonctionne).

Pense à faire un test avec des caractères accentués et un symbole euro pour voir :)

Jacques.
 
WRInaute passionné
C'est noté, merci Jacques.

De toute façon à ce moment je réouvrirai surement un topic, pour valider correctement le flux, par exemple.

D'ailleurs il semble s'afficher malgré des erreurs à la validation, mais bon... Peut-être que ça ne fonctionnerait pas partout. Autant faire les choses correctement.
 
Discussions similaires
Haut