Help XML/RSS/PHP
8 messages
• Page 1 sur 1
- scorto
- Nouveau WRInaute

- Messages: 4
- Inscription: 25 Déc 2007
Help XML/RSS/PHP
Bonjour à tous et bonnes fetes
Voilà j'essaie depuis hier d'inclure un script pour générer un fichier xml pour créer un flux rss pour mon site.
Je me suis servi d'un tuto là: http://www.siteduzero.com/tuto-3-695...ec-domxml.html
Problème:
mon fichier xml est introuvable sur le serveur et je n'ai pas de message d'erreur lorsque je lance la page php comprenant le code.
D'où cela peut il venir?
Voici les codes:
Page flux_rss.php:
______________________________________________________________
<?php
function &init_news_rss(&$xml_file)
{
$root = $xml_file->create_element("rss"); //création de l'element
$root->set_attribute("version", "2.0"); //on lui ajoute un attribut
$root = $xml_file->append_child($root); //on l'insère dans le noeud parent (ici root qui est "rss")
$channel = $xml_file->create_element("channel");
$channel = $root->append_child($channel);
$desc = $xml_file->create_element("description");
$desc = $channel->append_child($desc);
$text_desc = $xml_file->create_text_node("Partage de connaissances en tout genre"); //on insère du texte entre les balies <description></description>
$text_desc = $desc->append_child($text_desc);
$link = $xml_file->create_element("link");
$link = $channel->append_child($link);
$text_link = $xml_file->create_text_node("http://creachriss.free.fr");
$text_link = $link->append_child($text_link);
$title = $xml_file->create_element("title");
$title = $channel->append_child($title);
$text_title = $xml_file->create_text_node("PbRanking");
$text_title = $title->append_child($text_title);
return $channel;
}
function add_news_node(&$parent, $root, $id, $pseudo, $titre, $contenu, $date)
{
$item = $parent->create_element("item");
$item = $root->append_child($item);
$title = $parent->create_element("title");
$title = $item->append_child($title);
$text_title = $parent->create_text_node($titre);
$text_title = $title->append_child($text_title);
$link = $parent->create_element("link");
$link = $item->append_child($link);
$text_link = $parent->create_text_node("http://creachriss.free.fr/rss_news".$id.".html");
$text_link = $link->append_child($text_link);
$desc = $parent->create_element("description");
$desc = $item->append_child($desc);
$text_desc = $parent->create_text_node($contenu);
$text_desc = $desc->append_child($text_desc);
$com = $parent->create_element("comments");
$com = $item->append_child($com);
$text_com = $parent->create_text_node("http://creachriss.free.fr/news-11-".$id.".html");
$text_com = $com->append_child($text_com);
$author = $parent->create_element("author");
$author = $item->append_child($author);
$text_author = $parent->create_text_node($pseudo);
$text_author = $author->append_child($text_author);
$pubdate = $parent->create_element("pubDate");
$pubdate = $item->append_child($pubdate);
$text_date = $parent->create_text_node($date);
$text_date = $pubdate->append_child($text_date);
$guid = $parent->create_element("guid");
$guid = $item->append_child($guid);
$text_guid = $parent->create_text_node("http://creachriss.free.fr/rss_news".$id.".html");
$text_guid = $guid->append_child($text_guid);
$src = $parent->create_element("source");
$src = $item->append_child($src);
$text_src = $parent->create_text_node("http://creachriss.free.fr");
$text_src = $src->append_child($text_src);
}
function rebuild_rss()
{
//On se connecte à la BDD
mysql_connect("localhost", "mon login", "mon mdp") or die(mysql_error());
mysql_select_db("creachriss") or die(mysql_error());
//On récupère les news
$nws = mysql_query("SELECT news_id, member_add_id, news_title, news_text, news_date_add FROM pms_news WHERE 1 ORDER BY news_date_add DESC LIMIT 0 OFFSET 10")or die(mysql_error());
//On crée le fichier XML
$xml_file = domxml_new_doc("1.0");
//On initialise le fichier XML pour le flux RSS
$channel = init_news_rss($xml_file);
//On ajoute chaque news au fichier RSS
while($news = mysql_fetch_assoc($nws)or die(mysql_error()))
{
add_news_node($xml_file, $channel, $news["news_id"], $news["member_add_id"], $news["news_title"], $news["news_text"], date("d/m/Y H:i", $news["news_date_add"]));
}
//On écrit le fichier
$xml_file->dump_file("flux_rss.xml");
}
?>
_______________________________________________________________
Dans le fichier index.php
J'ai mis en fin de code:
require('flux_rss.php');
rebuild_rss();
______________________________________________________________
Merci de votre aide
Voilà j'essaie depuis hier d'inclure un script pour générer un fichier xml pour créer un flux rss pour mon site.
Je me suis servi d'un tuto là: http://www.siteduzero.com/tuto-3-695...ec-domxml.html
Problème:
mon fichier xml est introuvable sur le serveur et je n'ai pas de message d'erreur lorsque je lance la page php comprenant le code.
D'où cela peut il venir?
Voici les codes:
Page flux_rss.php:
______________________________________________________________
<?php
function &init_news_rss(&$xml_file)
{
$root = $xml_file->create_element("rss"); //création de l'element
$root->set_attribute("version", "2.0"); //on lui ajoute un attribut
$root = $xml_file->append_child($root); //on l'insère dans le noeud parent (ici root qui est "rss")
$channel = $xml_file->create_element("channel");
$channel = $root->append_child($channel);
$desc = $xml_file->create_element("description");
$desc = $channel->append_child($desc);
$text_desc = $xml_file->create_text_node("Partage de connaissances en tout genre"); //on insère du texte entre les balies <description></description>
$text_desc = $desc->append_child($text_desc);
$link = $xml_file->create_element("link");
$link = $channel->append_child($link);
$text_link = $xml_file->create_text_node("http://creachriss.free.fr");
$text_link = $link->append_child($text_link);
$title = $xml_file->create_element("title");
$title = $channel->append_child($title);
$text_title = $xml_file->create_text_node("PbRanking");
$text_title = $title->append_child($text_title);
return $channel;
}
function add_news_node(&$parent, $root, $id, $pseudo, $titre, $contenu, $date)
{
$item = $parent->create_element("item");
$item = $root->append_child($item);
$title = $parent->create_element("title");
$title = $item->append_child($title);
$text_title = $parent->create_text_node($titre);
$text_title = $title->append_child($text_title);
$link = $parent->create_element("link");
$link = $item->append_child($link);
$text_link = $parent->create_text_node("http://creachriss.free.fr/rss_news".$id.".html");
$text_link = $link->append_child($text_link);
$desc = $parent->create_element("description");
$desc = $item->append_child($desc);
$text_desc = $parent->create_text_node($contenu);
$text_desc = $desc->append_child($text_desc);
$com = $parent->create_element("comments");
$com = $item->append_child($com);
$text_com = $parent->create_text_node("http://creachriss.free.fr/news-11-".$id.".html");
$text_com = $com->append_child($text_com);
$author = $parent->create_element("author");
$author = $item->append_child($author);
$text_author = $parent->create_text_node($pseudo);
$text_author = $author->append_child($text_author);
$pubdate = $parent->create_element("pubDate");
$pubdate = $item->append_child($pubdate);
$text_date = $parent->create_text_node($date);
$text_date = $pubdate->append_child($text_date);
$guid = $parent->create_element("guid");
$guid = $item->append_child($guid);
$text_guid = $parent->create_text_node("http://creachriss.free.fr/rss_news".$id.".html");
$text_guid = $guid->append_child($text_guid);
$src = $parent->create_element("source");
$src = $item->append_child($src);
$text_src = $parent->create_text_node("http://creachriss.free.fr");
$text_src = $src->append_child($text_src);
}
function rebuild_rss()
{
//On se connecte à la BDD
mysql_connect("localhost", "mon login", "mon mdp") or die(mysql_error());
mysql_select_db("creachriss") or die(mysql_error());
//On récupère les news
$nws = mysql_query("SELECT news_id, member_add_id, news_title, news_text, news_date_add FROM pms_news WHERE 1 ORDER BY news_date_add DESC LIMIT 0 OFFSET 10")or die(mysql_error());
//On crée le fichier XML
$xml_file = domxml_new_doc("1.0");
//On initialise le fichier XML pour le flux RSS
$channel = init_news_rss($xml_file);
//On ajoute chaque news au fichier RSS
while($news = mysql_fetch_assoc($nws)or die(mysql_error()))
{
add_news_node($xml_file, $channel, $news["news_id"], $news["member_add_id"], $news["news_title"], $news["news_text"], date("d/m/Y H:i", $news["news_date_add"]));
}
//On écrit le fichier
$xml_file->dump_file("flux_rss.xml");
}
?>
_______________________________________________________________
Dans le fichier index.php
J'ai mis en fin de code:
require('flux_rss.php');
rebuild_rss();
______________________________________________________________
Merci de votre aide
-

zeb - WRInaute accro

- Messages: 4560
- Inscription: 5 Déc 2004
je viens de faire cela avec un fopen ce matin, cela m'a pris 30 mn et c'est basique.
ce que je veux dire c'est que ton code est super compliqué.
ton contenu semble être en base.
l'entête xml ne change jamais (mis a part la date)
donc concatène une chaîne toute bête et écrit le fichier dans la foulée sur le disque.
ce que je veux dire c'est que ton code est super compliqué.
ton contenu semble être en base.
l'entête xml ne change jamais (mis a part la date)
donc concatène une chaîne toute bête et écrit le fichier dans la foulée sur le disque.
- Code: Tout sélectionner
$xml= '<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<channel>
<title>...</title>
<link>...</link>
<description>...</description>
<copyright>...</copyright>
<pubDate>'.date("D").', '.date("d").' '.date("M").' '.date("Y").' '.date("H").':'.date("i").':'.date("s").' GMT</pubDate>
';
$sql = "SELECT * FROM info ORDER BY ID desc LIMIT 0,7";
$data = mysql_query($sql);
while($record = mysql_fetch_array($data)){
$ID = $record[0];
$titre = $record[1];
$image = $record[2];
$descriptif = $record[3];
$lien = $record[4];
$cote_img = $record[5];
$ordre = $record[6];
$date_deb = $record[7];
$date_fin = $record[8];
$keyword = $record[9];
$description = $record[10];
$fichier = $ID."-".accent($titre).".php";
$url = "http://.../info/".$fichier;
$xml.="<item>
<title>$titre</title>
<link>$url</link>
<description>$description</description>
<pubDate>$date_deb</pubDate>
</item>
";
}
$xml .='</channel>
</rss>';
$fd = fopen($HTTP_SERVER_VARS['DOCUMENT_ROOT']."/rss-actu.xml", "w");
fwrite($fd, $xml);
fclose($fd);
?>
- passion
- WRInaute accro

- Messages: 3125
- Inscription: 6 Jan 2006
il y a encore beaucoup plus simple de générer un fichier XML à la volée!
Tu crées une page PHP effectivement ou tu lui notifies:
1- un header en text/xml pour qu'il reconnaisse le format du langage généré.
2- Tu développes effectivement une simple chaine de caractères reprenant l'entête basique de la synthaxe XML (comme montré dans le post précédent)
3- développement du corps de ton fichier via mysql par exemple en terminant par une chaine de caractères comprenant les balises fermantes du fichier XML
4- Tu crées une ligne de réécritures sur ton fichier htaccess pour transformer ton extension".php" en ".xml" voilà.... grosso modo !
Voilà à l'appel de ta page fluxXml.php en --> fluxXml.xml (tu auras un beau fichier généré XML)
Tu crées une page PHP effectivement ou tu lui notifies:
1- un header en text/xml pour qu'il reconnaisse le format du langage généré.
2- Tu développes effectivement une simple chaine de caractères reprenant l'entête basique de la synthaxe XML (comme montré dans le post précédent)
3- développement du corps de ton fichier via mysql par exemple en terminant par une chaine de caractères comprenant les balises fermantes du fichier XML
4- Tu crées une ligne de réécritures sur ton fichier htaccess pour transformer ton extension".php" en ".xml" voilà.... grosso modo !
Voilà à l'appel de ta page fluxXml.php en --> fluxXml.xml (tu auras un beau fichier généré XML)
-

zeb - WRInaute accro

- Messages: 4560
- Inscription: 5 Déc 2004
passion a écrit:Tu crées une page PHP effectivement ou tu lui notifies:
1- un header en text/xml pour qu'il reconnaisse le format du langage généré.
4- Tu crées une ligne de réécritures sur ton fichier htaccess pour transformer ton extension".php" en ".xml" voilà.... grosso modo !
Bien vue, dommage que j'ai pas accès a la réécriture d'url car cela m'éviterais le passage obligé par la régénération du xml
-

zeb - WRInaute accro

- Messages: 4560
- Inscription: 5 Déc 2004
darkjukka a écrit:en même temps un flux rss qui a php pour extension c'est pas bien genant non plus
Du coup j'ai inclus le générateur dans les scripts de gestion des news et du coup je me casse plus la nénette a mettre a jour
Quoi de plus fainéant qu'un informaticien !!!
8 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Un (RSS) pour tous (les blogs officiels de Google)
- Intégrer facilement un flux RSS externe
- Utiliser Actifpub pour l'intégration d'un flux RSS externe sur son site
- Intégrer un flux RSS sur son site
- Référencement vidéo sur Exalead
- La syndication de contenu : afficher un flux RSS sur son site
- Comment obtenir le flux RSS d'un compte Twitter
- Google Enterprise a son blog
Consultez la description détaillée des produits ou services de Google suivants : API Google Checkout
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

