Ecrire dans un .xml - FILE_APPEND - envoi via php

Signaler
Messages postés
14
Date d'inscription
mardi 15 novembre 2005
Statut
Membre
Dernière intervention
25 septembre 2008
-
Messages postés
14
Date d'inscription
mardi 15 novembre 2005
Statut
Membre
Dernière intervention
25 septembre 2008
-
Bonjour bonjour la communauté,

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))
            {
   
        $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 .= '';
        $xml .= '';
        $xml .= '';
        $xml .= '';
        $xml .= '<Option Name="FileRead">1</Option>';
        $xml .= '<Option Name="FileWrite">1</Option>';
        $xml .= '<Option Name="FileDelete">0</Option>';
        $xml .= '<Option Name="FileAppend">0</Option>';
        $xml .= '<Option Name="DirCreate">1</Option>';
        $xml .= '<Option Name="DirDelete">1</Option>';
        $xml .= '<Option Name="DirList">1</Option>';
        $xml .= '<Option Name="DirSubdirs">1</Option>';
        $xml .= '<Option Name="IsHome">1</Option>';
        $xml .= '<Option Name="AutoCreate">0</Option>';
        $xml .= '

';
        $xml .= '

';
        $xml .= '<SpeedLimits DlType="1" DlLimit="10" ServerDlLimitBypass="0" UlType="1" UlLimit="10" ServerUlLimitBypass="0">';
        $xml .= '<Download/>';
        $xml .= '';
        $xml .= '</SpeedLimits>';
        $xml .= '';
       
        $xml = $filename->asXML();
        file_put_contents('2.xml',$xml, FILE_APPEND) ;
            }
        }   
?>

J'ai point d'erreur ! mais cela ne me rempli pas mon 2.xml....

J'ai merdé ?
oui mais où ?

Merci par avance pour le coup de main.

       
A voir également:

24 réponses

Messages postés
14
Date d'inscription
mardi 15 novembre 2005
Statut
Membre
Dernière intervention
25 septembre 2008

Personne pour une petite aide ?
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
21
 Bonjour.
       if ( !function_exists('file_put_contents') &&
!defined('FILE_APPEND') ) ==> faudrait pas mieux un
 

      if ( function_exists('file_put_contents') && defined('FILE_APPEND') )
Messages postés
14
Date d'inscription
mardi 15 novembre 2005
Statut
Membre
Dernière intervention
25 septembre 2008

Merci.

Béh ça ne change rien du tout ...
toujours pas d'erreur et toujours pas de fichier crée :(

??
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
21
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) ;
Messages postés
14
Date d'inscription
mardi 15 novembre 2005
Statut
Membre
Dernière intervention
25 septembre 2008

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

Est ce un probleme de cette ligne la  ? :

    $filename = simplexml_load_file('C:\Site-easyphp\2.xml');

Oui sans doute .. mais j'ai pas de message d'erreur pourtant, et la fonction est bien chargée puisque je le vois sur easyphp avec php 5.2

... ?
Messages postés
14
Date d'inscription
mardi 15 novembre 2005
Statut
Membre
Dernière intervention
25 septembre 2008

new code donc :

<?php
       
       
        if ( function_exists('file_put_contents') && defined('FILE_APPEND') )
        {
            echo "fonction présente [OK]";
           
            if (file_exists('C:\Site-easyphp\2.xml'))
            {
            $filename = simplexml_load_file('2.xml');

                //print_r($filename);
                echo "
";
                echo "Load file [OK]";
                                       
        $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 .= '';
        $xml .= '';
        $xml .= '';
        $xml .= '';
        $xml .= '<Option Name="FileRead">1</Option>';
        $xml .= '<Option Name="FileWrite">1</Option>';
        $xml .= '<Option Name="FileDelete">0</Option>';
        $xml .= '<Option Name="FileAppend">0</Option>';
        $xml .= '<Option Name="DirCreate">1</Option>';
        $xml .= '<Option Name="DirDelete">1</Option>';
        $xml .= '<Option Name="DirList">1</Option>';
        $xml .= '<Option Name="DirSubdirs">1</Option>';
        $xml .= '<Option Name="IsHome">1</Option>';
        $xml .= '<Option Name="AutoCreate">0</Option>';
        $xml .= '

';
        $xml .= '

';
        $xml .= '<SpeedLimits DlType="1" DlLimit="10" ServerDlLimitBypass="0" UlType="1" UlLimit="10" ServerUlLimitBypass="0">';
        $xml .= '<Download/>';
        $xml .= '';
        $xml .= '</SpeedLimits>';
        $xml .= '';
       
        $xml = $filename->asXML();
        file_put_contents($filename, $xml, FILE_APPEND) ;
           
            }
                    else {
                    echo "
";
                    echo "Load file [NOK]";
                    }
        }
?>
       
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
21
            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\
Messages postés
14
Date d'inscription
mardi 15 novembre 2005
Statut
Membre
Dernière intervention
25 septembre 2008

Bonjour,

J'

Maintenant j'ai des erreurs simplexml.... nondidiouuuuu!

code :

<?php
       
       
        if ( function_exists('file_put_contents') && defined('FILE_APPEND') )
        {
            echo "fonction présente [OK]";
           
            if (file_exists('C:\Site-easyphp\2.xml'))
            {
            $filename = simplexml_load_file('2.xml');
           
                //print_r($filename);
                echo "
";
                echo "Load file [OK]";
                                       
        $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

Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in C:\Site-easyphp\envoixml.php on line 10

Je suis proche du but!
mais jai toujours des soucis, cela vient de la function simplexml ...
que faire ?
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
21
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
Messages postés
14
Date d'inscription
mardi 15 novembre 2005
Statut
Membre
Dernière intervention
25 septembre 2008

Oui dans mon 2.xml j'ai :

<?xml version= "1.0" encoding="ISO-8859-1"?><?xml version="1.0" encoding="ISO-8859-1"?><Option Name="Pass">$1$j8h7fCBV$tbiuwwSZ</Option><Option Name="Group"/><Option Name="Bypass server userlimit">0</Option><Option Name="User Limit">0</Option><Option Name="IP Limit">0</Option><Option Name="Enabled">1</Option><Option Name="Comments"/><Option Name="ForceSsl">0</Option> <Disallowed/> <Option Name ="FileRead">1</Option><Option Name= "FileWrite">1</Option><Option Name="FileDelete">0</Option><Option Name="FileAppend">0</Option><Option Name="DirCreate">1</Option><Option Name="DirDelete">1</Option><Option Name="DirList">1</Option><Option Name="DirSubdirs">1</Option><Option Name="IsHome">1</Option><Option Name="AutoCreate">0</Option>

<SpeedLimits DlType="1" DlLimit="10" ServerDlLimitBypass="0" UlType="1" UlLimit="10" ServerUlLimitBypass= "0"><Download/> </SpeedLimits> <?xml version ="1.0" encoding="ISO-8859-1"?><Option Name="Pass">$1$XWAizT3M$.Nj/dVXu</Option><Option Name="Group"/><Option Name="Bypass server userlimit">0</Option><Option Name="User Limit">0</Option><Option Name="IP Limit">0</Option><Option Name="Enabled">1</Option><Option Name="Comments"/><Option Name="ForceSsl">0</Option> <Disallowed/> <Option Name ="FileRead">1</Option><Option Name= "FileWrite">1</Option><Option Name="FileDelete">0</Option><Option Name="FileAppend">0</Option><Option Name="DirCreate">1</Option><Option Name="DirDelete">1</Option><Option Name="DirList">1</Option><Option Name="DirSubdirs">1</Option><Option Name="IsHome">1</Option><Option Name="AutoCreate">0</Option>

<SpeedLimits DlType="1" DlLimit="10" ServerDlLimitBypass="0" UlType="1" UlLimit="10" ServerUlLimitBypass= "0"><Download/> </SpeedLimits> <?xml version ="1.0" encoding="ISO-8859-1"?><Option Name="Pass">$1$j8h7fCBV$tbiuwwSZ</Option><Option Name="Group"/><Option Name="Bypass server userlimit">0</Option><Option Name="User Limit">0</Option><Option Name="IP Limit">0</Option><Option Name="Enabled">1</Option><Option Name="Comments"/><Option Name="ForceSsl">0</Option> <Disallowed/> <Option Name ="FileRead">1</Option><Option Name= "FileWrite">1</Option><Option Name="FileDelete">0</Option><Option Name="FileAppend">0</Option><Option Name="DirCreate">1</Option><Option Name="DirDelete">1</Option><Option Name="DirList">1</Option><Option Name="DirSubdirs">1</Option><Option Name="IsHome">1</Option><Option Name="AutoCreate">0</Option>

<SpeedLimits DlType="1" DlLimit="10" ServerDlLimitBypass="0" UlType="1" UlLimit="10" ServerUlLimitBypass= "0"><Download/> </SpeedLimits> <Option Name ="Pass">$1$izf5mmT/$W7I08Gay</Option><Option Name="Group"/><Option Name="Bypass server userlimit">0</Option><Option Name="User Limit">0</Option><Option Name="IP Limit">0</Option><Option Name="Enabled">1</Option><Option Name="Comments"/><Option Name="ForceSsl">0</Option> <Disallowed/> <Option Name ="FileRead">1</Option><Option Name= "FileWrite">1</Option><Option Name="FileDelete">0</Option><Option Name="FileAppend">0</Option><Option Name="DirCreate">1</Option><Option Name="DirDelete">1</Option><Option Name="DirList">1</Option><Option Name="DirSubdirs">1</Option><Option Name="IsHome">1</Option><Option Name="AutoCreate">0</Option>

<SpeedLimits DlType="1" DlLimit="10" ServerDlLimitBypass="0" UlType="1" UlLimit="10" ServerUlLimitBypass= "0"><Download/> </SpeedLimits> <?xml version ="1.0" encoding="ISO-8859-1"?><Option Name="Pass">$1$XWAizT3M$.Nj/dVXu</Option><Option Name="Group"/><Option Name="Bypass server userlimit">0</Option><Option Name="User Limit">0</Option><Option Name="IP Limit">0</Option><Option Name="Enabled">1</Option><Option Name="Comments"/><Option Name="ForceSsl">0</Option> <Disallowed/> <Option Name ="FileRead">1</Option><Option Name="FileWrite">1</Option><Option Name="FileDelete">0</Option><Option Name="FileAppend">0</Option><Option Name="DirCreate">1</Option><Option Name="DirDelete">1</Option><Option Name="DirList">1</Option><Option Name="DirSubdirs">1</Option><Option Name="IsHome">1</Option><Option Name="AutoCreate">0</Option>

<SpeedLimits DlType="1" DlLimit="10" ServerDlLimitBypass="0" UlType="1" UlLimit="10" ServerUlLimitBypass="0"><Download/></SpeedLimits>

Tout à la suite par contre.... pas de retour chariot.

Oui j'ai le souci de la ligne xml récurrente alors qu'elle ne doit apparaitre qu'une fois...
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
21
Tu as deux fois le <?xml version
<?xml version="1.0" encoding="ISO-8859-1"?><?xml version="1.0" encoding="ISO-8859-1"?>
Messages postés
14
Date d'inscription
mardi 15 novembre 2005
Statut
Membre
Dernière intervention
25 septembre 2008

Oui je vois ca,

mais meme quand je l'enleve et que je le mets par defaut dans le fichier 2.xml cela coince...

ralalalala ! ca m'agace ^^
Messages postés
103
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
26 décembre 2009
1
Salut,

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^^

A++
Messages postés
14
Date d'inscription
mardi 15 novembre 2005
Statut
Membre
Dernière intervention
25 septembre 2008

Il me faut un APPEND car je veux ecrire à la suite dans ce fichier!
je ne veux pas l'écraser à chaque fois...

au final ca me fera un fichier xml avec tous mes user ftp...

du coup j'utilise un APPEND.. mais ya peut etre une autre astuce ?
Messages postés
103
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
26 décembre 2009
1
Salut,

Alors là c'est mal partie.
Explication XML :

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

A++ extraman1
Messages postés
14
Date d'inscription
mardi 15 novembre 2005
Statut
Membre
Dernière intervention
25 septembre 2008

Ok je comprend.

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 ?
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
21
            $filename = simplexml_load_file('2.xml');
> te renvoie un objet SimpleXMLElement.
Il te suffit d'utiliser les méthodes de cette objet addChild, ...
Messages postés
14
Date d'inscription
mardi 15 novembre 2005
Statut
Membre
Dernière intervention
25 septembre 2008

Ok ok je vois,

As tu un cours simple la dessus ? car je m'y perd facilement dans toutes ces fonctions :(

merci!
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
21
Désolé, je n'ai pas de cours la dessus, mais tu devrais trouver dans la doc ce que tu as besoin
http://fr.php.net/simplexml

Cdt
Messages postés
14
Date d'inscription
mardi 15 novembre 2005
Statut
Membre
Dernière intervention
25 septembre 2008

Bon j'arrive à rien.

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