J'essaie d'envoyer du contenu xml dans un fichier xml ! en meme temps que l'envoie par méthode POST.
J'ai fait un bout de code (ci-dessous) mais cela ne fonctionne pas. :
<?php
$filename = simplexml_load_file('2.xml');
if ( !function_exists('file_put_contents') && !defined('FILE_APPEND') )
{
if (file_exists($filename))
{
Béh rajout des messages de debug dans ton code.
if(filexists...) {
echo "debuf file exists";
else {
echo "pb de fichier, ..";
}
...
remplace peut etre ton
file_put_contents('2.xml',$xml, FILE_APPEND) ;
par
file_put_contents($filename,$xml, FILE_APPEND) ;
Oui je n'y avais pas pensé ! pourtant cest le béabah...
bref.
Oui il voit la fonction =>OK
par contre il ne voit pas le filename et passe par dessus le code jusqu'a mon else en fin de code qui me renvoie un echo "load file => NOK" .
Donc ca ne crée ni le 2.xml ni le modifie puisque cest comme ci y'avait pas de code ...
if (file_exists('C:\Site-easyphp\2.xml'))
{ $filename simplexml_load_file('2.xml');> vérifie avec getcwd qui le répertoire courant est bien
C:\Site-easyphp\
$xml = '<?xml version="1.0" encoding="ISO-8859-1"?>' ;
$xml .= '' ; //écrit la valeur de la variable entre les balises
$xml .= '<Option Name="Pass">' . $donnees["crypte"] . '</Option>';
$xml .= '<Option Name="Group"/>';
$xml .= '<Option Name="Bypass server userlimit">0</Option>' ;
$xml .= '<Option Name="User Limit">0</Option>';
$xml .= '<Option Name="IP Limit">0</Option>';
$xml .= '<Option Name="Enabled">1</Option>';
$xml .= '<Option Name="Comments"/>';
$xml .= '<Option Name="ForceSsl">0</Option>';
$xml .= '';
$xml .= '<Disallowed/>';
$xml .= 'function.simplexml-load-file]: 2.xml:1: parser error : XML declaration allowed only at the start of the document in C:\Site-easyphp\envoixml.php on line 10
Warning: simplexml_load_file() [function.simplexml-load-file]: ?><?xml version ="1.0" encoding="ISO-8859-1"?><Option Name= in C:\Site-easyphp\envoixml.php on line 10
A tu essayé d'ouvrir ton fichier xml avec ton navigateur web pour voir si la syntaxe de ton doc xml est bonne.
?><?xml version="1.0" encoding="ISO-8859-1"?><Option Name= in C:\Site-
> Cela laisse penser que tu as du code avant le "<?xml version..." alors que normalement c'est la première ligne
Alors déjà quand tu fais un APPEND, il écrit à la suite du fichier, donc tu te retrouve avec X fois :
<?xml version="1.0" encoding="ISO-8859-1"?> dans ton fichier.
Du coup à la prochaine lecture de ton fichier, le fichier XML n'est plus un fichier valable. Donc la seule solution est que tu réécrives ton XML à chaque fois.
D'où ma question : pourquoi fais-tu un APPEND?
PS : Tu ne respectes pas la norme XML qui dis que les éléments et les attributs ne doivent pas comporter de majuscules, simple remarque^^
<?xml version="1.0" encoding="ISO-8859-1"?> doit unique dans le fichier XML
Ensuite il ne doit possèder qu'une seul racine, toi ici ta racine c'est donc quand je lis ça, tu n'as qu'un fichier par user
Il te faut plus une architecture comme ça :
...
...
....
Ce que tu n'as pas là.
Donc pour résumer, il faut que tu fasses en sorte que <?xml version="1.0" encoding="ISO-8859-1" ?> soit unique, est qu'à chaque fois que tu écris dans ton XML, tu inséres à l'intérieur de
Etant ton code actuel, tu ne peux pas le faire de cette façon.
Si je met :
<?xml version="1.0" encoding="ISO-8859-1"?>
contenu à mettre
Dans mon fichier 2.xml, lorsque je fait l'envoi de données pour la premiere fois, ca m'écrase tout.
si je réitère x fois, alors ca secrit à la suite, mais du coup : <?xml version="1.0" encoding="ISO-8859-1"?> n'est plus présent !
Comment je pourrais faire pour qu'il me laisse par défaut cette ligne
plus les 2 balises users et /users ?
Même avec l'aide via http://fr.php.net/simplexml , je n'arrive pas à appliquer ce que je souhaite.
Une âme charitable aurait d'autres exemples concrets à m'apporter ?
Je suis preneur