[PHP/XML] Flux RSS sans BDD

Fermé
SamC7 - 12 juin 2009 à 09:22
kryoportail Messages postés 222 Date d'inscription dimanche 10 août 2008 Statut Membre Dernière intervention 22 mai 2014 - 12 juin 2009 à 12:17
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>";
?>
A voir également:

3 réponses

kryoportail Messages postés 222 Date d'inscription dimanche 10 août 2008 Statut Membre Dernière intervention 22 mai 2014 125
12 juin 2009 à 12:17
Re,

XMLWriter peut te permettre de créer un code XML valide : https://www.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...
1
kryoportail Messages postés 222 Date d'inscription dimanche 10 août 2008 Statut Membre Dernière intervention 22 mai 2014 125
12 juin 2009 à 10:19
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 : https://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...
0
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 ?
0