Simple XML : modifier contenu d'un noeud

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Simple XML : modifier contenu d'un noeud

par supercanard » 23 avr. 2009, 13:53

Oups j'ai oublié de mettre résolu.

Entre temps je me suis rendu compte, comme orgerix le soulevais que je ne sauvegardais pas...

Voilà le code complet qui marche, avec le strval à ne pas oublé sinon c'est le crash ;)
if(isset($_POST['submitConfig'])){
	$i = 0;
	foreach($config->item as $param){
		$key = strval($param->k);
		if($key != 'submitConfig'){
			$param->v = $_POST[$key];
			$i++;
		}
	}

$xml = $config->asXML();
file_put_contents('global/config.xml', $xml);
}

par Ryle » 23 avr. 2009, 10:07

Hum... dans une boucle de type foreach, tu copies une valeur dans une variable qui est réinitialisée à chaque itération... Résultat, en sortir de boucle, ta variable $param contient la dernière valeur qui lui a été affectée (les précédentes étant écrasées au fur et à mesure) et ton tableau n'est pas modifié (il est seulement parcouru)
foreach ($config->item as $param) 
ici, tu copies tour à tour, la valeur de chaque élément du tableau $config->item dans une variable $param, dont le seul lien qu'il pourrait y avoir avec le tableau est de contenir la même valeur que l'une de ses cellules :)

par orgerix » 22 avr. 2009, 21:29

Question bête : tu sauvegardes ton arborescence xml ensuite ?

Parce que SimpleXML charge l'arborescence integralement pour travailler dessus après. Ensuite il faut soit afficher l'arborescence, soit la sauvegarder dans un fichier.

Simple XML : modifier contenu d'un noeud

par supercanard » 22 avr. 2009, 20:51

Bonsoir,

J'ai visiblement un petit soucis pour modifier le contenu d'un noeud avec simple XML. Il y a quelquechose qui doit m'échapper... je n'obtient pas d'erreur mais le fichier ne bouge pas

Je fait la chose suivante :
<?php

$config = simplexml_load_file('global/config.xml');
	foreach($config->item as $param){
		$param->v = 'toto';
	}
}
?> 
Avec un fichier de base qui ressemble à ça :

Code : Tout sélectionner

<?xml version="1.0"?> <config> <item> <l>blabla</l> <k>blabla</k> <v>blabla</v> </item> <item> <l>blabla</l> <k>blabla</k> <v>blabla</v> </item> </config>