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] Localiser un noeud pour l'ajout


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    sla
    sla est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 3
    Par défaut [DOM] Localiser un noeud pour l'ajout
    Bonjour,
    je débute en xml et mon fichier ressemble à ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <Liste>
    <Music URL="http://www......" >Le titre du morceau</Music>
    </Liste>
    Et j'ai un fichier php qui pour l'instant me rajoute le noeud Music mais pas du tout là où je voudrais (il se rajoute après les balises <Liste>) je ne sais pas comment lui dire d'aller à l'intérieur de ces balises. La personne doit pouvoir rajouter autant de musique qu'elle veut via un formulaire (php) et je vois partout que pour l'ajout de noeud je dois utiliser DOM que je ne connais pas du tout.
    Du coup j'ai quelques questions:
    j'ai installé EasyPhp 2.0 beta qui comporte php 5 dois-je tout de même installer une librairie ou y est-elle déjà ? Dois-je modifier le php.ini ?
    Auriez-vous une solution "plus simple" pour cet ajout ?
    Je vous remercie pour votre aide.
    Sophie.

  2. #2
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut
    la méthode getElementsByTagName de DomElement pour sélectionner liste

    http://www.php.net/manual/fr/functio...sbytagname.php


    la méthode appendChild de DomNode pour ajouter un noeud fils à un noeud

    http://www.php.net/manual/fr/functio...ppendchild.php
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  3. #3
    sla
    sla est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 3
    Par défaut
    merci pour cette réponse ultra rapide !
    Mais comme je vous dis je suis vraiment une débutante en xml et je me permet de poster mon fichier php car j'iumagine qu'il y a plus que ces 2 fonctions à ajouter car pour l'instant j'ai ces erreurs : Undefined variable doc-xml et Call to a member function getElementsByTagName() on a non object.
    merci beaucoup
    Code php : 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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Document sans titre</title>
    <style type="text/css">
    <!--
    .Style1 {
    	font-family: Verdana, Arial, Helvetica, sans-serif;
    	font-weight: bold;
    }
    .Style2 {font-family: Verdana, Arial, Helvetica, sans-serif}
    -->
    </style>
    </head>
     
    <body>
    <?php
    if(isset($_POST['action'])) $action=$_POST['action']; else $action="inconnue";
    if($action=="ecriture") {
    ############################################################ECRITURE
    //Initialisation des variables envoyées par le formulaire
    if(isset($_POST['URL'])) $URL=$_POST['URL']; else $URL="URL inconnu";
    if(isset($_POST['titre'])) $titre=$_POST['titre']; else $titre="titre inconnu";
    //---------------------------------
     $fp= fopen("liste.xml", "a");//ouverture du fichier XML
     
    $Liste=$doc_xml->getElementsByTagName('Liste');
    foreach($Liste as $Liste){
     
     $fichier_xml ="\t<Music URL=\"$URL\">$titre</Music>\r\n";
    }
     
     
     //-------------------------------------------------------------------------------------
     fwrite($fp, $fichier_xml);//ecriture du fichier
     fclose($fp);//fermeture du fichier
    // header("Location:liste.xml");
    ############################################################FIN D'ECRITURE
    }//fin du IF
    ?>
       </p>
    <form name="form1" method="POST" action="ecritureXml3.php">
      <table width="500" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#000000">
        <tr>
          <td><div align="center">
              <table width="496" border="0" cellspacing="0" cellpadding="5">
                <tr>
                  <td colspan="2"><div align="center" class="Style1">ECRITURE
                      D'UN FICHIER XML </div></td>
                </tr>
                <tr>
                  <td width="248"><div align="right" class="Style2">Titre :
                      </div></td>
                  <td width="248"><input name="titre" type="text" id="titre" ></td>
                </tr>
                <tr>
                  <td><div align="right" class="Style2">Fichier : </div></td>
                  <td><input type="file" name="URL" id="URL" ></td>
                </tr>
     
                <tr>
                  <td colspan="2"><div align="center">
                      <input type="submit" name="Submit" value="Envoyer">
                      <input name="action" type="hidden" id="action" value="ecriture">
                  </div></td>
                </tr>
              </table>
          </div></td>
        </tr>
      </table>
      <p align="center">&nbsp;</p>
      <p>&nbsp;</p>
    </form>
     
    <a href="liste.xml" > Voir le fichier XML avant l'&eacute;criture </a>
    </body>
    </html>

  4. #4
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut
    il faut charger le fichier avec DomDocument::load()
    http://www.php.net/manual/fr/functio...ument-load.php

    Code php : 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
     
    <?php
    $filename = 'liste.xml';
    $doc = new DOMDocument();
    $doc->load($filename);
    $nodes_liste = $doc->getElementsByTagName("liste");
    $liste = $nodes_liste[0];
     
    $music = $doc->createElement("music");
     
    $url = $doc->createAttribute("url");
    $url->appendChild($doc->createTextNode($txt_url));
    $music->appendChild($url);
     
    $music->appendChild($doc->createTextNode($txt_titre););
     
    $liste->appendChild($music);
    $doc->save($filename);
    ?>

    ajoutes les tests... et vérifies les détails (je n'ai pas testé)
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  5. #5
    sla
    sla est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 3
    Par défaut
    je te remercie c'est tout bon je pense mais je reste à me demander si je ne dois pas installer de librairie supplémentaire car je reste avec cette erreur : Cannot instantiate non existant class : domdocument in ....
    Alors ce que j'ai fais c'est que j'ai installé easyphp 1.8 puis j'ai installer la derniere version de php de ce site :http://www.php.net/downloads.php en modifiant ce qu'il fallais dans l'httpd.conf et l'extension domxml dans le php.ini.
    Et si je comprend bien ce qu'ils nous disent sur ce site http://www.php.net/manual/fr/ref.domxml.php rien n'est nécessaire comme supplément ...
    hum ... auriez-vous une idée ?
    merci merci
    Sophie.

  6. #6
    Membre émérite Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Par défaut
    Sauf erreur, DomDocument, c'est du PHP5 non?

Discussions similaires

  1. Localiser un noeud en erreur dans un arbre DOM
    Par treize92 dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 15/06/2011, 17h00
  2. [DOM] Localiser un noeud non-valide dans un arbre DOM
    Par treize92 dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 15/06/2011, 14h16
  3. Ajouter noeud pour Linux (cross compilation)
    Par Crosser02 dans le forum Administration système
    Réponses: 0
    Dernier message: 19/02/2010, 14h58
  4. Réponses: 6
    Dernier message: 09/12/2008, 09h45
  5. [VBA-PP]Invalid Key pour l'ajout d'un noeud d'une treeview
    Par marsupilami34 dans le forum VBA PowerPoint
    Réponses: 4
    Dernier message: 28/08/2006, 17h14

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