Ecrire dans un .xml - FILE_APPEND - envoi via php

dxounet Messages postés 14 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 25 septembre 2008 - 12 sept. 2008 à 13:29
dxounet Messages postés 14 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 25 septembre 2008 - 25 sept. 2008 à 15:16
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.

       

24 réponses

dxounet Messages postés 14 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 25 septembre 2008
12 sept. 2008 à 15:23
Personne pour une petite aide ?
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
12 sept. 2008 à 16:13
 Bonjour.
       if ( !function_exists('file_put_contents') &&
!defined('FILE_APPEND') ) ==> faudrait pas mieux un
 

      if ( function_exists('file_put_contents') && defined('FILE_APPEND') )
0
dxounet Messages postés 14 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 25 septembre 2008
12 sept. 2008 à 16:32
Merci.

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

??
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
12 sept. 2008 à 16:39
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) ;
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dxounet Messages postés 14 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 25 septembre 2008
12 sept. 2008 à 17:18
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

... ?
0
dxounet Messages postés 14 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 25 septembre 2008
12 sept. 2008 à 17:24
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]";
                    }
        }
?>
       
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
12 sept. 2008 à 17:27
            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\
0
dxounet Messages postés 14 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 25 septembre 2008
15 sept. 2008 à 10:25
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 ?
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
15 sept. 2008 à 10:31
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
0
dxounet Messages postés 14 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 25 septembre 2008
15 sept. 2008 à 10:36
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...
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
15 sept. 2008 à 10:41
Tu as deux fois le <?xml version
<?xml version="1.0" encoding="ISO-8859-1"?><?xml version="1.0" encoding="ISO-8859-1"?>
0
dxounet Messages postés 14 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 25 septembre 2008
15 sept. 2008 à 10:58
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 ^^
0
extraman1 Messages postés 103 Date d'inscription lundi 8 septembre 2003 Statut Membre Dernière intervention 26 décembre 2009 2
15 sept. 2008 à 11:47
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++
0
dxounet Messages postés 14 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 25 septembre 2008
15 sept. 2008 à 11:49
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 ?
0
extraman1 Messages postés 103 Date d'inscription lundi 8 septembre 2003 Statut Membre Dernière intervention 26 décembre 2009 2
15 sept. 2008 à 12:20
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
0
dxounet Messages postés 14 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 25 septembre 2008
15 sept. 2008 à 14:05
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 ?
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
15 sept. 2008 à 14:16
            $filename = simplexml_load_file('2.xml');
> te renvoie un objet SimpleXMLElement.
Il te suffit d'utiliser les méthodes de cette objet addChild, ...
0
dxounet Messages postés 14 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 25 septembre 2008
17 sept. 2008 à 10:18
Ok ok je vois,

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

merci!
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
17 sept. 2008 à 10:29
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
0
dxounet Messages postés 14 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 25 septembre 2008
18 sept. 2008 à 11:45
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
0
Rejoignez-nous