Help XML/RSS/PHP

scorto
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 4
Inscription: 25 Déc 2007

Help XML/RSS/PHP

Message le Mar Déc 25, 2007 12:52

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 ;)

Chou78125
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 6
Inscription: 7 Jan 2008

Message le Mar Jan 08, 2008 2:50

Salut t'a essayer avec la fonction include ?

Peut-être je suis pas un pro mais essaye comme même

ciao


zeb
WRInaute accro
WRInaute accro
 
Messages: 4560
Inscription: 5 Déc 2004

Message le Mar Jan 08, 2008 13:31

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.

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
WRInaute accro
 
Messages: 3125
Inscription: 6 Jan 2006

Message le Mar Jan 08, 2008 14:47

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)


zeb
WRInaute accro
WRInaute accro
 
Messages: 4560
Inscription: 5 Déc 2004

Message le Mar Jan 08, 2008 17:20

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

darkjukka
WRInaute impliqué
WRInaute impliqué
 
Messages: 669
Inscription: 28 Avr 2007

Message le Mar Jan 08, 2008 17:39

en même temps un flux rss qui a php pour extension c'est pas bien genant non plus ;)


zeb
WRInaute accro
WRInaute accro
 
Messages: 4560
Inscription: 5 Déc 2004

Message le Mar Jan 08, 2008 18:25

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 :D
Quoi de plus fainéant qu'un informaticien !!!

darkjukka
WRInaute impliqué
WRInaute impliqué
 
Messages: 669
Inscription: 28 Avr 2007

Message le Mar Jan 08, 2008 19:00

Ah ben le flux rss de mon site est pareil, un fichier php qui va chercher les 10 derniers enregistrements des news de ma base et qui les affichent.

Sauf que je peux le réécrire en xml ^^


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités