XML & PHP

Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011 - 5 mars 2008 à 11:08
MasterCent Messages postés 83 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 14 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>

Merci.:-)

6 réponses

MasterCent Messages postés 83 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 14 décembre 2011 1
5 mars 2008 à 12:48
Peux tu
préciser ta question : 



<li>
As tu un xml ou veux tu le générer ? 

</li>
<li>
Les valeurs qui peuple ton xml sont-elles issues d'une base ?

</li>
<li>
Lorsque qu'un navigateur va sur la page .php, il doit recevoir du text ou du xml ?

</li>
<li>
Existe t'il un schema ou une DTD qui décrit le xml ?

</li>
<li>
A quelle fin est-ce utilisé ? ( Ajax, RSS, DB, ... )

</li>
<li>
Quel version de php as tu  ? (DOM existe sous php5 )

</li>
<li>
As tu des données avec des accents, ç et autres exotisme ...

</li>
<li>
As tu lu de la documentation ...

</li>


Ph.
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
5 mars 2008 à 13:22
salut
sur php.net, t'as plusieurs api pour manipuler du XML. c'est tres bien documente.

/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Derniè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>

Mon PHP :

<?php
$listNews = simplexml_load_file('news.xml');
$listNews = $listNews->story;
foreach ($listNews as $news)
{
echo "".$news->title."";
echo "
";
echo $news->date;
echo "
";
echo $news->body;
echo "
";
echo "lien.".html');">LIRE LA SUITE";
echo "

";
echo "----------";
echo "

";

}
?>

Merci :)
0
MasterCent Messages postés 83 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 14 décembre 2011 1
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 )




<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- EPH 2008 -->
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>



<!--
la racine du xml
-->

<
xsl:template
match
="/">
Voici les news :

<!-- toutes les story -->
     <xsl:apply-templates select="//story"/>

<hr/>
</xsl:template>



<!--
Une story
-->

<
xsl:template
match
="story">
<li>
<xsl:value-of select="./title"></xsl:value-of>
<xsl:apply-templates select="./lien"/>
</li>
</xsl:template>



<!--
Un lien
-->

<
xsl:template
match
="lien">
<xsl:variable name="cible"><xsl:value-of select="node()"></xsl:value-of></xsl:variable>
[{$cible} ... Lire la suite]
</xsl:template>










</
xsl:stylesheet
>





Bon boulot !

 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Derniè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...

Help plz.
0
MasterCent Messages postés 83 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 14 décembre 2011 1
5 mars 2008 à 17:05
Ceci t'inspirera peut-être ?

<?PHP
  /* exemple de script qui supprime une story de tes news
   -----------------
  infos : http://fr.php.net/manual/fr/function.dom-domdocument-save.php
 
  <news>
  ...
  <story id= "s2">
  <title>Régulateur de température</title>
  <date>| le 01 octobre 2007 |</date>
   Afin de manipuler encore moins les moûts, ...
  <lien>systeme_regulation_fr</lien>
  </story>
  ...
  </news>
 
  */




  // initialisation :
  $storyID = "s2" ;
  define ('FICHIER' , 'news.xml' ) ;






  $doc = new DOMDocument; 
  $doc->load( FICHIER );


  $news = $doc->documentElement;


  // 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 ...


?>
0
Rejoignez-nous