Rechercher : dans
Par :

[PHP/XML] Flux RSS sans BDD

Dernière réponse le 12 jun 2009 à 12:17:07 SamC7, le 12 jun 2009 à 09:22:39 
 Signaler ce message aux modérateurs

Bonjour, dans le cadre de mon stage, je dois faire un éditeur de XML (pour un flux RSS) en PHP et sans BDD.

Grâce à mon ami Google j'ai trouvé un code qui permet via 1 formulaire de remplir des champs textes,... avec les données que l'on veut voir apparaitre dans le RSS et qui permet d'enregistrer ces données dans un fichier XML.
Mon soucis au départ était que cela écraser à chaque fois ma précédente news. Donc encore avec mon ami Google, j'ai trouvé un autre code qui me permet de mettre plusieurs news dans un fichier XML.

Maintenant mes soucis sont :
- arriver à supprimer mes deux dernières balises pour qu'à chaque fois que je rentre une nouvelle news elles ne soient pas là.
- arriver à remplacer, par exemple la news 1 par une nouvelle news 1,... quand l'utilisateur spécifie le numéro de la news... mouais c'est pas super clair... mais bon c'est le premier problème qui me pose le plus de soucis ^^

Voici mon code qui me permet d'enregistrer mes news dans mon fichier XML :

<?php
	// Configuration
	$cfg['file_to_edit'] = "rss.xml";
	$cfg['page_retour'] = "editer_news.php";

	$titre = stripslashes($_POST['titre']);
	$description = stripslashes($_POST['description']);
	$url_link_text = $_POST['url_link_text'];
	$url = $_POST['url'];
	$add_date = $_POST['add_date'];
	$thumb_image = $_FILES['thumb_image']['name']; /*Voir si importer image dans serveur, si redimensionner*/
	$description = $_POST['description'];
	
	$text = "<item id=\"".$_POST['num']."\">\n";
	$text .= "<title>".$titre."</title>\n";
	$text .= "<url_link_text>".$url_link_text."</url_link_text>\n";
	$text .= "<url>".$url."</url>\n";
	$text .= "<add_date>".$add_date."</add_date>\n";
	$text .= "<thumb_image>".$thumb_image."</thumb_image>\n";
	$text .= "<description>".$description."</description>\n";
	$text .= "</item>\n\n";
	$xml_bas = "</channel>\n";
	$xml_bas .= "</rss>\n";
	
	$path= $cfg['file_to_edit'];

		if(file_exists($path))
			{
			$handle = fopen($path,"r");
			$content = file($path);
			fclose($handle);  
			}
$handle = fopen($path,"w");
	
      for($i=0;$i < count($content); $i++)
         {  
          if(($content[$i] != "")&&($content[$i] != "\r\n"))
          fwrite($handle,$content[$i]);
         }    
	  $str_out = stripslashes($text);
      fwrite($handle,$str_out);
      fclose($handle);
	
	echo "<div align=\"center\">";
		echo "<h1>Edition effectuée</h1>";
		echo "<p><a href=\"".$cfg['page_retour']."\">Retour</a></p>";
	echo "</div>";
?>
Configuration: Windows XP
Firefox 3.0

Meilleures réponses pour « [PHP/XML] Flux RSS sans BDD » dans :
Les flux RSS pour l'entreprise VoirUsages des flux rss pour l'entreprise Le développement du Web 2.0 (un Internet plus participatif et réactif), offre aux entreprises avec les flux RSS un outil majeur dans leurs stratégies marketing. Les flux RSS sont également des éléments...
Agrégateurs RSS (lecteurs de fils RSS) VoirAgrégateurs RSS (lecteurs de fils RSS) Présentation générale des flux RSS Principaux agrégateurs RSS Agrégateurs RSS online Présentation générale des flux RSS Le standard RSS représente un moyen d'être tenu informé des nouveaux contenus...
Télécharger ARA Editeur RSS VoirLe flux RSS est une liste de mise à jour publiée ou diffusé sur une blog ou un site internet. Il affiche un résumé d’information pour un article sans avoir consulter le site en question. ARA est un programme permettant de composer et...
Les standards RSS VoirLe standard RSS Un flux RSS est un simple fichier texte contenant des informations structurées au format XML, permettant de décrire de façon fine le contenu du canal et de chacun des items qui le constituent. Il existe plusieurs versions du...

1

kryoportail, le 12 jun 2009 à 10:19:54

Salut,

Bien demande à ton ami google "simplexml"... car apparemment vous êtes proches tout les 2 !
Ou encore mieux, fait lui des infidélités et va directement dans le manuel PHP : http://www.php.net/manual/fr/book.simplexml.php

Attention : En procédant comme tu l'as fait... il est possible de rendre potentiellement ton XML illisible (car invalide).... Si tu mets dans ton titre ou ta description, le caractère "<" par exemple, je doute que ton RSS soit encore lisible... Il faut encoder certains caractères en XML !

Amicalement,
S@M...

Répondre à kryoportail

2

SamC7, le 12 jun 2009 à 10:33:23

Aurais-tu un autre code sous la main qui me permet de faire comme mon code et en faisant attention la lisibilité du XML ?

Sinon pourrais-tu m'orienter un peu plus sur le SimplXML ? Quelle fonction utilisée ?

Répondre à SamC7

3

 kryoportail, le 12 jun 2009 à 12:17:07
  • +1

Re,

XMLWriter peut te permettre de créer un code XML valide : http://us3.php.net/manual/en/book.xmlwriter.php.
Ou sinon, un simple str_replace(); sur ton texte pour remplacer les entités XML suffit.

Une page qui parle des problèmes liés par les caractères invalides en XML : http://www.journaldunet.com/...

Un truc dans le genre :

var_dump( $xml->xpath('/rss/chanel/item') );

te trouvera normalement tous les items contenu dans ton fichier rss...

Suffit de garder ceux que tu souhaites dans un tableau et d'ajouter en plus celui que l'utilisateur veut rajouter...
A la fin du script tu reprends le tableau des items, et tu génères le nouveau xml... et c'est gagné...

Amicalement,
S@M...

Répondre à kryoportail