Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
740 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP+XML] replaceNode

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP+XML] replaceNode

n°1368514
Fourmiz83
Posté le 17-05-2006 à 10:44:24  profilanswer
 

Salut a tous,
Je souhaite modifier un fichier xml dynamiquement. Dans ce cas la, je veut modifier les attribut d'un noeud. Je sais qu'il faut que j'utilise replaceNode mais a vrai dire je suis un peu perdu.
 
Fichier xml:
<Liste>
<File id="5" label1="la chose" data1="videos/videos4.flv" description="blablabla c\'est super cool ce machin chose" realiser="machin" date="01/01/01" url1="www.google.fr"/>
</Liste>
 
Code php:
<?php
$idf=$_POST['id'];
$mlabel1=$_POST["titre"];
$mdata1=$_POST["l_videos"];
$mdescription=$_POST["description"];
$mrealiser=$_POST["realiser"];
$mdate=$_POST["date"];
$marticle=$_POST["l_article"];
$mnomarticle="(lire la suite)";
 
if(!$dom=DOMDocument::load("videos.xml" )) {
//if(!$dom->load("videos.xml" )){
echo "Erreur lors de l'analyse du document\n";
exit;
}
$filesNodeList = $dom->getElementsByTagName('File');
foreach($filesNodeList as $fileNode){
$label1=$fileNode->getAttribute('label1');
$data1=$fileNode->getAttribute('data1');
if ( $fileNode->getAttribute('id') == $idf){
$titre=$fileNode->replaceNode($mlabel1, $label1);
$video=$fileNode->replaceNode($mdata1,$data1);
}
}
$dom->save("videos.xml" );
echo "reussi";
?>
 
Mon PHP ne marche pas... Est ce que quelqu'un pourrait m'aider?

mood
Publicité
Posté le 17-05-2006 à 10:44:24  profilanswer
 

n°1368520
anapajari
s/travail/glanding on hfr/gs;
Posté le 17-05-2006 à 10:52:55  profilanswer
 

apprends à te servir du DOM [:spamafote]
la tu cherches en fait à modifier la valeur d'un attribut en remplaçant un noeud, c'est nawak ( et d'ailleurs replaceNode ne prend qu'un param).
Il faut que tu utilises la fonction setAttribute.
 
edit: Et sans vouloir ronchonner, je t'avais déjà expliqué tout ça ici: http://forum.hardware.fr/hardwaref [...] 0344-1.htm


Message édité par anapajari le 17-05-2006 à 10:53:40
n°1368555
Fourmiz83
Posté le 17-05-2006 à 11:30:24  profilanswer
 

Je sais que t'avais repondu mais quand tu t'y connait pas c'est dur de realiser le projet. COmme tu me l'a expliquer j'ai utiliser setAttribute.
 
<?php
$idf=$_POST['id'];
$mlabel1=$_POST["titre"];
$mdata1=$_POST["l_videos"];
$mdescription=$_POST["description"];
$mrealiser=$_POST["realiser"];
$mdate=$_POST["date"];
$marticle=$_POST["l_article"];
$mnomarticle="(lire la suite)";
 
if(!$dom=DOMDocument::load("videos.xml" )) {
echo "Erreur lors de l'analyse du document\n";
exit;
}
$filesNodeList = $dom->getElementsByTagName('File');
foreach($filesNodeList as $fileNode){
 
if ( $fileNode->getAttribute('id') == $idf){
$id=$fileNode->removeAttribute('id');
$id_a=$fileNode->setAttribute('id',$idf);
$titre=$fileNode->removeAttribute('label1');
$titre_a=$fileNode->setAttribute('label1',$mlabel1);
$videos=$fileNode->removeAttribute('data1');
$videos_a=$fileNode->setAttribute('data1',$mdata1);
$descri=$fileNode->removeAttribute('description');
$descri_a=$fileNode->setAttribute('description',$mdescription);
$realiser=$fileNode->removeAttribute('realiser');
$realiser_a=$fileNode->setAttribute('realiser',$mrealiser);
$date=$fileNode->removeAttribute('date');
$date_a=$fileNode->setAttribute('date',$mdate);
$urlnom=$fileNode->removeAttribute('urlnom');
$urlnom_a=$fileNode->setAttribute('urlnom',$mnomarticle);
$urllien=$fileNode->removeAttribute('urllien');
$urllien_a=$fileNode->setAttribute('urllien',$marticle);
}
}
$dom->save("videos.xml" );
echo "reussi";
?>  
 
Ca marche...enfin normalement...
Merci a toi de m'avoir aider... ;)

n°1368567
anapajari
s/travail/glanding on hfr/gs;
Posté le 17-05-2006 à 11:38:38  profilanswer
 

Petite optimisation: t'as pas besoin de faire les removes. Si l'attribut existe déjà, la valeur sera mise à jour

n°1368926
Fourmiz83
Posté le 17-05-2006 à 16:12:14  profilanswer
 

J'ai une tite question, tu m'avais dit de ne plus utiliser domxml mais DOM tout court mais une fois passer sur l'hebergeur( qui utilise php 4.3.1) voila les 2 erreurs qui apparait:
Fatal error:  Undefined class name 'domdocument' in
et  
Parse error: parse error, unexpected T_OBJECT_OPERATOR in
Sur free ca marchais, du moins pour la 2eme erreur.
Est ce du a la version de php?


Message édité par Fourmiz83 le 17-05-2006 à 16:15:25
n°1368943
anapajari
s/travail/glanding on hfr/gs;
Posté le 17-05-2006 à 16:24:42  profilanswer
 

:D

n°1369337
Fourmiz83
Posté le 18-05-2006 à 09:12:17  profilanswer
 

Je pense que ca doit etre ca non?

n°1369370
anapajari
s/travail/glanding on hfr/gs;
Posté le 18-05-2006 à 09:55:30  profilanswer
 

dans ce genre de situation tu as

Code :
  1. <?php phpinfo();?>

pour savoir exactement ce dont tu disposes!

n°1369397
Fourmiz83
Posté le 18-05-2006 à 10:17:30  profilanswer
 

je l'ai deja fait mais le truc c'est que j'ai pas l'extension DOMXML comme sur free...
 
domxml
DOM/XML  enabled
DOM/XML API Version  20020815
libxml Version  20624
HTML Support  enabled
XPath Support  enabled
XPointer Support  enabled
DOM/XSLT  enabled
libxslt Version  1.1.16
libxslt compiled against libxml Version  2.6.24
 
Cette extension n'y ai pas...
Je croix bien qu'il faut que j'abandonne PHP XML non?
En passant par SQL ca sera plus facile?

n°1369408
Hermes le ​Messager
Breton Quiétiste
Posté le 18-05-2006 à 10:27:11  profilanswer
 

Fais ta base de donnée manuellement une fois pour toutes, à base de fichiers txt (trouve une autre ext) sans XML. C'est la seule solution pour ne pas dépendre d'un hébergeur. Par contre, pour des gros projets, oublie. [:ddr555]
 

mood
Publicité
Posté le 18-05-2006 à 10:27:11  profilanswer
 

n°1369438
Fourmiz83
Posté le 18-05-2006 à 10:52:29  profilanswer
 

Si je passe par SQL, je peux pas généré de fichier XML, c'est mort de chez mort? Parce qu'en fait j'ai mon flahs qui lit un fichier xml et qui affiche des données...
 
Avec SQL je supprime ajout modifie et que ensuite je génére le fichier XML a chaque action, c'est possible?

n°1369444
Hermes le ​Messager
Breton Quiétiste
Posté le 18-05-2006 à 10:57:24  profilanswer
 

Fourmiz83 a écrit :

Si je passe par SQL, je peux pas généré de fichier XML, c'est mort de chez mort? Parce qu'en fait j'ai mon flahs qui lit un fichier xml et qui affiche des données...
 
Avec SQL je supprime ajout modifie et que ensuite je génére le fichier XML a chaque action, c'est possible?


 
Tu peux toujours réécrire avec fopen et tout le tralalala ton fichier XML [:spamafote] C'est pas toujours la mort suivant les cas, et avec quelques regexp, on peut faire des miracles et des trucs pas trop lents surtout en utilisant des motifs PCRE.

n°1369448
Fourmiz83
Posté le 18-05-2006 à 11:02:06  profilanswer
 

Mouais oki...
Sinon si j'utilise ADODB et recorset est ce que le serveur va le supporter?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP+XML] replaceNode

 

Sujets relatifs
Commentaires PHP[XQuery] Poser des requêtes sur un document XML
Plusieurs actions pour le bouto nsubmit en PHP?Problème avec PHP et .htaccess
[PHP] faire un ping d'un serveur distantXML - suppresion de noeuds dynamiquement [erreur]
[Delphi 6] XML Mapper[PHP ?] Terminal Linux sur une page web
[PHP] addslashes sur 100 champs de formChat en PHP
Plus de sujets relatifs à : [PHP+XML] replaceNode


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR