Orange73
Messages postés1375Date d'inscriptiondimanche 28 novembre 2004StatutMembreDernière intervention 2 août 2011
-
5 mars 2008 à 11:08
MasterCent
Messages postés83Date d'inscriptionjeudi 22 septembre 2005StatutMembreDernière intervention14 décembre 2011
-
5 mars 2008 à 17:05
Bonjour,
je souhaiterai savoir comment editer un .xml avec php ?
Je m'explique.
Je souhaiterai avoir un .php qui me genere la liste des balises <news> de mon xml.
Avec pour chaque élement de cette liste un moyen de l'éditer avec un champ <nom> et un <contenu>
Orange73
Messages postés1375Date d'inscriptiondimanche 28 novembre 2004StatutMembreDernière intervention 2 août 2011 5 mars 2008 à 13:24
Hello,
> J'ai un XML.
> les données sont inscrites dans le XML
> Lorque l'on va sur la page php je souhaiterai avoir une liste de mes balises <story> avec pour chaque element de cette liste la possibilite de modifier les balises contenu a l'intérieur : <title> <date> <lien>, ou de supprimer cette balise story. Exactement pareil qu'un backoffice de gestion de news mais avec un xml et pas de BDD.
> version php5
> données avec accents oui
> oui j'en ai lu et j'ai reussi a afficher le contenu de mon xml via php mais je souhaiterai maintenant pouvoir modifier ou supprimer les différents éléments.
Mon XML :
<?xml version= "1.0" encoding="UTF-8" ?>
<news>
<story>
<title>Nouveau Site Internet</title>
<date>| le 02 octobre 2007 |</date>
En 1989, notre premier site Internet était en ligne, étant de ce fait le premier site d’un Domaine Viticole en France...
<lien>new_website_fr</lien>
</story>
<story>
<title>Régulateur de température</title>
<date>| le 01 octobre 2007 |</date>
Afin de manipuler encore moins les moûts, nous avons fait installer en 2007 un système de régulation de température des cuves entièrement contrôlé à distance... <lien>systeme_regulation_fr</lien>
</story>
</news>
MasterCent
Messages postés83Date d'inscriptionjeudi 22 septembre 2005StatutMembreDernière intervention14 décembre 20111 5 mars 2008 à 15:11
Re bonjour :
Il existe au moins trois approches du problème :
<li>
Soit tu travailles en code php, comme le fait ton script, comme si ton xml était un objet.
</li>
<li>
Soit tu ecris un parseur en php, dont la fonction sera de transformer ton xml, à la volée. (sauf erreur, ceci ne fera que de la lecture).
</li>
<li>
Soit tu travailles avec des xsl, qui transformeront ton xml. (cfr plus bas).
</li>
<li>
Soit un autre autre méhode que je ne connais pas ?
</li>
Personnellement, je suis plus à l'aise avec les objets. Mais pour un simple affichage, tu peux utiliser deux xsl , un pour générer le menu des stories, l'autre pour éditer une story en particulier. Ainsi qu'un peu de code pour "supprimer une story".
Ceci dit, il n'y a pas d'identifiant à tes balises <story>. Comment envisages tu de remonter l'info vers le serveur. Comment va t-il savoir que c'est cette story précisément qu'il faut supprimer ou editer ?
Essaye de voir si recevant un id de story en $_GET par exemple, ton serveur est capable de supprimer cette story ( ou de cacher !)
Penses aussi à l'avenir, comment vas tu ajouter une story, place une date de validité (valable jusqu'au ... ) etc.
Voici à quoi ressemble du xsl ( il existe une méthode php pour appliquer un xsl sur un xml coté serveur )
Orange73
Messages postés1375Date d'inscriptiondimanche 28 novembre 2004StatutMembreDernière intervention 2 août 2011 5 mars 2008 à 16:10
merci pour ta reponse.
OK pour un ID pour les story.
en fait, je load mon XML dans du flash.
je souhaiterai editer chaque news (modifier, ajouter, supprimer) via un backoffice en php.
> une page index avec le listing des news ( id, titre, date) avec 3 boutons (1 pour modifier, 1 pour supprimer et 1 pour ajouter).
> une page modification de la news id=...
> une page ajout d'une news.
En php et BDD OK.
Mais PHP et XML, je galere un peu sur les lignes de codes pour modifier, ajouter ou supprimer...
// A la recherche d'une story par l'id (si il existe une DTD )
$story = $doc->getElementById ( $storyID ) ;
if ( ! $story ) { // A la recherche d'une story par la collection
$stories = $doc->getElementsByTagName ( "story" ) ;
foreach ($stories as $storyTmp) { if ( $storyTmp -> getAttribute('id') $storyID ) $story $storyTmp;
}
} // --------------
$oldStory = $news->removeChild($story);
$doc->save ( FICHIER ) ; ceci sauve le document ...
echo $doc->saveXML(); // envoi au navigateur le document ...