Page 1 sur 1

Fermer mon fichier XML avec php

Posté : 01 févr. 2006, 22:12
par Pedro
Bonsoir à tous!

Bon je préviens tout de suite je suis débutant en php.
Voici ma question:

Je récupère des données depuis un fichier swf que j'ai créer. Ces données sont transmises à php pour les écrire dans un fichier xml.
Mon code php pour save.php est le suivant:
<?php
	//Je récupère les données depuis flash
	$id= $_POST['id'];
	$box1= $_POST['box1'];
	$box2= $_POST['box2'];
	$box3= $_POST['box3'];

	//Je réécris ça en xml pour le mettre à la suite de mon fichier
	$toSave = '<item nom="'.$id.'" donnees="'.$box1.'" info="'.$box2.'" info2="'.$box3.'" />';

	//J'ouvre mon fichier xml
	//a+ pour ecrire à la suite
	$fp = fopen("registre.xml", "a+");
	if(fwrite($fp, $toSave)) echo "writing=Ok";
	else echo "writing=Error";
	fclose($fp);   
?>
Donc la tout ce passe bien, les données sont bien ajoutées à mon fichier xml.

Mon fichier xml est comme ceci:

Code : Tout sélectionner

<?xml version="1.0" encoding="utf-8"?> <items> <item nom="premierItem" donnees="01" info="01" info2="01" /> <item nom="Item2" donnees="01" info="01" info2="01" /> et la php rajoute viens rajouté les données à la suite
Mon problème c'est que je ne sais pas comment fermer mon fichier xml. C'est à dire lui rajouter la balise qui fermera la racine </items>.
Si je le met ici :
$toSave = '<item nom="'.$id.'" donnees="'.$box1.'" info="'.$box2.'" info2="'.$box3.'" /></items>';
Quand mon fichier save.php sera rééxécuter, il me rajoutera encore </items> et mon xml ne sera plus correcte.

Je suis débutant et je cherche une solution simple à mon problème. Quelqu'un serait-il comment je pourrais écrire à la suite de mon xml, puis le fermer. Et ceci à chaque que je rééxécute mon fichier save.php

Posté : 01 févr. 2006, 22:21
par jeff
salut
le plus simple est de passer par les fonctions dom
dom pour php5 http://fr.php.net/manual/fr/ref.dom.php
et domxml pour php4http://fr.php.net/manual/fr/ref.domxml.php

Posté : 01 févr. 2006, 22:51
par Invité
Merci beaucoup pour tes conseils jeff.
Mais j'ai un petit souci, je débute vraiment en php et je crois que je comprend pas trop encore la manip à faire.
J'ai comencé par mettre ce code:
	$dom = domxml_open_file("registre2.xml");
	$root = $dom->document_element();
et ça me renvoie déja:

Code : Tout sélectionner

Fatal error: Call to undefined function: domxml_open_file() in /tests/saveXML02.php on line 5
Qu'est-ce que ça veut dire? il ne reconnait pas ce que je lui ai écrit?

Quelqu'un aurait une idée pour la suite, ou me guider vers des tutos là dessus, car je patine sévère!

Posté : 01 févr. 2006, 23:18
par jeff
quel version de php a tu (phpinfo) et est ce que domxml est installé

Posté : 01 févr. 2006, 23:56
par Invité
j'ai fait phpinfo(); et : php 4.4.0 par contre je sais pas si domxml est installé.
C'est une classe à installer? Ca ne fait pas parti de php? Comment faire si ya des trucs à installer.
(sinon est-ce qui ya pas un moyen de trouver une astuce à mon problème avec la méthode que j'expliquais dans mon premier post)