Flux rss

WRInaute discret
Bonjour à tous.

J'ai mis en place des flux rss, et les webmaster d'autres site qui affiche mes flux rss me demandent s'il serait possible que chaque flux soit daté sur leur site également. Sur le mien c'est daté , mais chez eux ils n'ont que le titre des news sans date.

prenont l'exemple des titres "actualité dans le monde" ici http://www.meteo-world.com/ il sont daté

et chez eux a l'aide de ce flux http://www.meteo-world.com/rss/rss_monde.php

ils ne sont pas daté.


Etant donné que les news sont daté dans la bdd, peut on ecrire les dates et heures de chaque news dans les flux rss ? Si oui comment ?




Merci
 
WRInaute impliqué
Dans tes fichiers rss, la date des articles n'est pas présentes.

Le champ pubDate doit être présent... :wink:

C'est pour cette raison que tes partenaires n'affichent pas la date
 
WRInaute discret
Ca ne reprend pas la date et heure de la base de donnée :?

La je vient de le tester en mettant pudate, et tous les titres du fil ont la meme date :?
 
WRInaute impliqué
si tu insères une balise <pubdate> le format de la date est obligatoirement RFC 822:
i.e. "Thu, 21 Dec 2000 16:01:07 +0200"

ça veut dire quoi ? ça veut dire que si tu build ton feed en php, et que la date de ton article est stockée dans $date_bdd, tu dois la reformater comme ça:
date("r",$date_bdd)

Exemple, un extrait de mon propre xml builder maison:

$xml ="<item>\n";
$xml .="<author>auteur@ton_auteur.com (auteur)</author>\n";
$xml .="<title>".$titre."</title>\n";
$xml .="<link>".$root."/droit/".$id."-".rewrite_url($titre)."/</link>\n";
$xml .="<pubDate>".date("r",$date)."</pubDate>\n";
$xml .="<guid>".$root."/droit/".$id."-".recrire_url($titre)."/</guid>\n";
$xml .="<comments>".$root."/droit/".$id."-".rewrite_url($titre)."/</comments>\n";
$xml .="<description>\n";
$xml .= $news;
$xml .="</description></item>\n";

bon courage
 
WRInaute impliqué
ben si tu as un agrégateur standard il doit être capable de le faire. je te conseille magpie.

Et tu refais le chemin en sens inverse: une fois extraite la date entre les 2 balises <pubdate>, par ex. dans la variable $date_extraite, tu la reformates comme ça:

$date_extraite=date("d.m.Y",$date_extraite);

tu auras ta date dans ce format: 3.10.2005

pour l'extraction en elle-même de la date contenue entre les 2 balises, si tu n'utilises pas magpie, il faut utiliser une expression régulière, type ereg en php.
 
WRInaute discret
Bon après mainte tentative je revient vers vous.


J'ai fait ceci

Code:
<?php
//flux RSS 
header('Content-Type: text/xml; charset=iso-8859-1');
include("***.php");
$rs = mysql_query('SELECT * FROM n** ORDER BY id DESC LIMIT 0,10') or die(mysql_error());

echo '<?xml version="1.0" encoding="iso-8859-1" ?>';
echo '<rss version="2.0">';
echo '<channel>';
echo '<title>Meteo-world</title>';
echo '<link>http://www.meteo-world.com</link>';
echo '<description>L\'actualite meteo en france</description>';
echo '<pubDate>".date("r",$date)."</pubDate>\n';
echo '<language>fr</language>';

while($rss = mysql_fetch_array($rs))
{
    echo '<item>';
    echo '<title>'.stripslashes(html_entity_decode($rss['titre'])).'</title>';
    echo '<link>http://www.meteo-world.com/news/index_france-'.$rss['id'].'.php</link>';
    echo '<pubDate>".date("r",$date)."</pubDate>\n';
	echo '</item>';
}
echo '</channel>';
echo '</rss>';    

?>


et ca me donne ceci :
http://www.meteo-world.com/rss/rss_france2.php

Il m'affiche donc ca dans pubdate > <pubDate>".date("r",$date)."</pubDate>

:?
 
WRInaute impliqué
Cette ligne n'est pas bonne

echo '<pubDate>".date("r",$date)."</pubDate>\n';

Tu a mis date("r",$date) entre des double cotes. C'est donc considéré comme une chaine de caracteres.

date() est une fonction php. $date est une variable. Il faut donc que tu affectes cette variable (ce qui n'est pas le cas dans ton code). Il faut affecter à cette varaible la date qui est dans ta base de données.

et ensuite du fait

$date_rss = date("r",$date_de_la_base);
echo '<pubDate>'.$date_rss.'</pubDate>\n';
 
WRInaute discret
Ca donne ca : http://www.meteo-world.com/rss/rss_france2.php


<pubDate>Thu, 1 Jan 1970 01:00:00 +0100</pubDate> :?




j'ai fait ca:

Code:
<?php
//flux RSS 
header('Content-Type: text/xml; charset=iso-8859-1');
include("***.php");
$rs = mysql_query('SELECT * FROM *** ORDER BY id DESC LIMIT 0,10') or die(mysql_error());

echo '<?xml version="1.0" encoding="iso-8859-1" ?>';
echo '<rss version="2.0">';
echo '<channel>';
echo '<title>Meteo-world</title>';
echo '<link>http://www.meteo-world.com</link>';
echo '<description>L\'actualite meteo en france</description>';
echo '<language>fr</language>';
 $date_rss = date("r",$date); 
while($rss = mysql_fetch_array($rs))
{
    echo '<item>';
    echo '<title>'.stripslashes(html_entity_decode($rss['titre'])).'</title>';
    echo '<link>http://www.meteo-world.com/news/index_france-'.$rss['id'].'.php</link>';
   
echo '<pubDate>'.$date_rss.'</pubDate>\n';
	echo '</item>';
}
echo '</channel>';
echo '</rss>';    

?>



La table date est un datetime il y a donc an mois jour heure min sec
 
WRInaute discret
et quand tu print $date tout cours?

perso chez moi ca affiche ca :
Code:
<pubDate>Thu,  1 Jan 1970 01:33:25 +0100</pubDate>
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut