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] Mettre à jour une données dans un noeud


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de eexit
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 61
    Par défaut [DOM] Mettre à jour une données dans un noeud
    Bonjour,

    Je souhaiterais mettre à jour une donnée dans un noeud mais je ne sais pas vraiment comment faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function set($user_id, $user_data)
    	{
    		//get the user node
    		$result = $this->xpath->query('//*/users['.$user_id.']/node');
    		$node = $result->item(0); //renvoie le bon noeud
     
    		$this->xml->replaceData($user_data); //comment faire??
     
     
    		//save XML file
    		$this->xml->save($this->file_name);
    	}
    Dans cette fonction, j'effectue une requête Xpath pour récuperer le noeud que je veux modifier ($node) mais après, je ne sais pas comment appliquer $user_data à ce noeud en effaçant la valeur précédente.

    Si vous savez, j'en serais ravi !

    Merci.

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    Tu me sembles bien parti. J'imagine que tu as vu la doc ?
    http://fr2.php.net/manual/fr/functio...eplacedata.php

    Quelque chose comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $node->replaceData(OFFSET, strlen($user_data), $user_data);

  3. #3
    Membre expérimenté

    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
    Par défaut
    Vous avez accès à l'attribut nodeValue des noeuds (DOMNode), il vous suffirait de faire quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    $dom = new DomDocument;
    $dom->formatOutput = TRUE;
    $dom->preserveWhiteSpace = FALSE;
    $dom->load('users.xml');
     
    $xpath = new DomXPath($dom);
    $users = $xpath->query('/root_users/user[user_id = "1"]/user_pseudo');
    foreach ($users as $user) { # L'expression XPath renvoyant une DomNodeList
        $user->nodeValue = 'toto';
    }
     
    header('content-type: text/plain');
    echo $dom->saveXML();
    Sachant que j'ai repris la structure XML que vous aviez donné dans l'une de vos précédentes discussions.

  4. #4
    Membre averti Avatar de eexit
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 61
    Par défaut
    Bonjour,


    Merci pour vos réponse.
    Tout d'abord, mon code est correcte mais je n'ai pas voulu utiliser un foreach() car je récupère qu'une seule donnée.

    Ok, voila solution pour modifier la valeur d'un noeud sans utiliser de foreach :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    function set($user_id, $user_data)
    	{
    		//get the user node
    		$result = $this->xpath->query('//*/users['.$user_id.']/node');
    		$node = $result->item(0)->nodeValue = $user_data;
     
    		//save XML file
    		$this->xml->save($this->file_name);
    	}
    ?>
    Je vous remercie beaucoup

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

Discussions similaires

  1. [Débutant] Mettre à jour une table dans une base de données crée par code.(access)
    Par sidisadmir dans le forum ADO.NET
    Réponses: 1
    Dernier message: 31/08/2013, 09h54
  2. Mettre à jour une valeur dans le DOM
    Par aerosky dans le forum jQuery
    Réponses: 6
    Dernier message: 21/03/2013, 09h45
  3. Mettre à jour une liaison dans une présentation
    Par pcastelin dans le forum VBA PowerPoint
    Réponses: 1
    Dernier message: 11/05/2010, 05h24
  4. mettre à jour des données dans un listbox
    Par sylvain50 dans le forum Débuter
    Réponses: 5
    Dernier message: 10/11/2009, 18h37
  5. [MySQL] Mettre à jour une donnée d'après une date
    Par padodanle51 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 08/06/2009, 11h48

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