IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[DOM XML] Enregistrer un fichier XML sur un serveur ftp [FAQ]


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 223
    Points : 240
    Points
    240
    Par défaut [DOM XML] Enregistrer un fichier XML sur un serveur ftp
    Bonjour à tous

    Suite à mon post ICI, j'utilise le code que julp m'a si gentiment communiqué (que je remercie encore une fois)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    <?php
    define('DEBUG', TRUE);
    define('FICHIER_XML', 'mm_bans.xml');
     
    $dom = new DomDocument();
    $dom->preserveWhiteSpace = FALSE;
    $dom->formatOutput = TRUE;
    $dom->load(FICHIER_XML);
    $xpath = new DOMXPath($dom);
     
    if (defined('DEBUG') && DEBUG) {
        echo '<pre>';
        print_r($_POST);
        echo '</pre>';
    }
     
    /**
     * Première étape : lister les nick
     * Deuxième étape : proposer un formulaire pour modifier cette partie du ban
     * Troisième étape : modifier le fichier XML
     *
     * Bug (?) : les double quotes ne passent pas dans l'expression XPath
     **/
     
    if (!isset($_POST['nick'])) {
        $nicks = $xpath->query('/banlist/ban/nick');
        echo '<form method="POST">';
        echo '<select name="nick">';
        foreach ($nicks as $nick) {
           printf('<option>%s</option>', utf8_decode($nick->nodeValue));
        }
        echo '</select>';
        echo '<input type="submit" value="Valider"/>';
        echo '</form>';
    } else if (isset($_POST['nick']) && count($_POST) == 1) { // Mode fainéant
        $ban = $xpath->query(sprintf('/banlist/ban[nick = "%s"]', utf8_encode($_POST['nick'])));
        echo '<form method="POST">';
        foreach ($ban->item(0)->getElementsByTagName('*') as $elt) {
            if ($elt->nodeName != 'nick') {
                printf('%s : <input type="text" name="%s" value="%s" /><br />', utf8_decode($elt->nodeName), utf8_decode($elt->nodeName), utf8_decode($elt->nodeValue));
            } else {
                printf('<input type="hidden" name="%s" value="%s" /><br />', utf8_decode($elt->nodeName), utf8_decode($elt->nodeValue));
            }
        }
        echo '<input type="submit" value="Modifier" />';
        echo '</form>';
    } else if (isset($_POST['nick']) && count($_POST) > 1) {
        $ban = $xpath->query(sprintf('/banlist/ban[nick = "%s"]', utf8_encode($_POST['nick'])));
        foreach ($ban->item(0)->getElementsByTagName('*') as $elt) {
            if ($elt->nodeName != 'nick') {
                $elt->nodeValue = utf8_encode($_POST[$elt->nodeName]);
            }
        }
        if (defined('DEBUG') && DEBUG) {
            echo '<pre>' . htmlentities($dom->saveXML()) . '</pre>';
        } else {
            $dom->save(FICHIER_XML);
        }
    } else if (defined('DEBUG') && DEBUG) {
        die("Houston on a un problème :S");
    }
    Le problème, c'est qu'il y a un hic et le hic, le voici :

    Tant que j'utilise ce code avec la valeur True pour debug, tout fonctionne mais dès que je passe en False, j'obtiens ce message au moment ou il est sensé sauvegarder les modifications que je fais



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: DOMDocument::save(ftp://...@84.207.xx.xx/bf2/mods/bf2/settings/mm_bans.xml) [function.DOMDocument-save]: failed to open stream: Remote file already exists and overwrite context option not specified.<br /> FTP server reports 213 109002 in /home.10.15/sensikilw/www/Pages_Web/Serveur_BF2/Banlist/Liste_bans3.php on line 111
    En ligne 111, j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $dom->save(FICHIER_XML);

    L'un de vous sait-il ce que signifie ce message d'erreur et comment y remédier ?

    Je vous remercie d'avance pour votre aide

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Je vois : le comportement par défaut des flux FTP gérés par PHP (fonctionnalité allow_url_fopen) interdit l'écrasement ou le remplacement d'un fichier existant. Je pense que la solution est de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $my_ftp_context = stream_context_create(array('ftp' => array('overwrite' => TRUE)));
    libxml_set_streams_context($my_ftp_context);
    Avant de faire appel à la méthode save.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 223
    Points : 240
    Points
    240
    Par défaut Un grand merci
    Comme le titre l'indique, un grand merci à julp pour son aide si préciseuse

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DOM] [XSL] Convertir un fichier XML vers un fichier CSS
    Par Invité dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 23/03/2007, 10h49
  2. [XSLT] transfo d'un fichier XML en plusieurs fichiers XML
    Par doudou_rennes dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 28/11/2006, 12h01
  3. [XSLT]transformer un fichier XML en en fichier XML
    Par alexandra dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 16/08/2006, 14h26
  4. Réponses: 4
    Dernier message: 31/07/2006, 09h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo