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

Langage PHP Discussion :

[PHP 8] Affichage du fils d'un second avec le DOMDocument


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2023
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2023
    Messages : 17
    Par défaut [PHP 8] Affichage du fils d'un second avec le DOMDocument
    Bonjour,

    Je teste le DOMDocument de PHP via l'exemple suivant que je trouve en commentaire dans la documentation: https://www.php.net/manual/fr/class.domdocument.php

    xml_album a comme fils xml_track et xml_second. Puis, xml_track à son tour comme fils xml_note. Je n'arrive pas à faire en sorte que xml_second a comme fils xml_second_note.


    Voilà le code:

    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
     
    // Set the content type to be XML
    header("Content-Type: application/xml; charset=ISO-8859-15");
     
    // "Create" the document.
    $xml = new DOMDocument("1.0", "ISO-8859-15");
    $xml->formatOutput = true; // pour un XML joliment indenté
     
    // Create some elements.
    $xml_album = $xml->createElement("Album");
    $xml_track = $xml->createElement("Track", "The ninth symphony");
     
    $xml_second = $xml->createElement("Second", "Album de Michael Jackson");
     
    // Set the attributes.
    $xml_track->setAttribute("length", "0:01:15");
    $xml_track->setAttribute("bitrate", "64kb/s");
    $xml_track->setAttribute("channels", "2");
     
    $xml_second->setAttribute("length", "0:02:30");
    $xml_second->setAttribute("bitrate", "120kb/s");
    $xml_second->setAttribute("channels", "3");
     
    // Create another element.
    $xml_note = $xml->createElement("Note", "The last symphony composed by Ludwig van Beethoven.");
     
    //$xml_second_note = $xml->createElement("Second note", "A very important note");
     
    // Append the elements.
    $xml_track->appendChild($xml_note);
    $xml_album->appendChild($xml_track);
     
    //$xml_second->appendChild($xml_second_note);
    $xml_album->appendChild($xml_second);
     
    // Ajoute la racine au document
    $xml->appendChild($xml_album);
     
    // Affiche le XML
    echo $xml->saveXML();
    Quand ces deux lignes là sont en commentaire,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    //$xml_second_note = $xml->createElement("Second note", "A very important note");
     
    //$xml_second->appendChild($xml_second_note);
    cela fonctionne et j'ai à l'écran:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <Album>
    <Track length="0:01:15" bitrate="64kb/s" channels="2">
    The ninth symphony
    <Note>
    The last symphony composed by Ludwig van Beethoven.
    </Note>
    </Track>
    <Second length="0:02:30" bitrate="120kb/s" channels="3">Album de Michael Jackson</Second>
    </Album>
    Par contre, quand les deux lignes sont décommentés, je n'arrive pas à avoir $xml_second_note comme fils de $xml_second et j'ai une erreur 500.

    Savez vous ce qui fait que cela ne fonctionne pas correctement s'il vous plaît?

    Je vous remercie par avance,

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 683
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 683
    Par défaut
    l'erreur 500 veut peut-être dire que l'affichage des erreurs n'est pas activée.
    essayez d'ajouter cette ligne au début de votre code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ini_set("display_errors", TRUE);
    si vous voyez bien le message d'erreur avec cette ligne, je vous conseille d'activer cet affichage sur tout votre serveur de développement. cela fait gagner beaucoup de temps quand on un message d'erreur détaillé.

  3. #3
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 334
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 334
    Billets dans le blog
    17
    Par défaut
    Le code initial me donne :

    <?xml version="1.0" encoding="ISO-8859-15"?>
    <Album>
      <Track length="0:01:15" bitrate="64kb/s" channels="2">The ninth symphony<Note>The last symphony composed by Ludwig van Beethoven.</Note></Track>
      <Second length="0:02:30" bitrate="120kb/s" channels="3">Album de Michael Jackson</Second>
    </Album>
    Mais ça n'a ni queue ni tête, je ne pense pas que c'est ce que tu veux.

    Pour obtenir ceci :

    <?xml version="1.0" encoding="UTF-8"?>
    <albums>
      <album title="Thriller" artist="Michael Jackson">
        <note>Note sur l'album de M. Jackson</note>
        <tracks>
          <track position="1" title="Wanna Be Startin' Somethin'" length="06:02"/>
          <track position="2" title="Baby Be Mine" length="04:20"/>
        </tracks>
      </album>
      <album title="9e symphonie" artist="Ludwig Van Beethoven"/>
    </albums>
    Tu peux faire cela :

    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
    <?php
     
    // header('Content-Type: application/xml; charset=UTF-8');
    header('Content-Type: text/plain; charset=UTF-8'); // Pour visu brut lors du développement
     
    $dom = new DOMDocument('1.0', 'UTF-8');
    $dom->formatOutput = true;
     
    // Création de la racine
    $albums = $dom->createElement('albums');
    $dom->appendChild($albums);
     
    // Création d'un album
    $album = $dom->createElement('album');
    $albums->appendChild($album);
    $album->setAttribute('title', 'Thriller');
    $album->setAttribute('artist', 'Michael Jackson');
     
    // Création d'une note
    $note = $dom->createElement('note', 'Note sur l\'album de M. Jackson');
    $album->appendChild($note);
     
    // Création des pistes
    $tracks = $dom->createElement('tracks');
    $album->appendChild($tracks);
     
    // Création d'une piste
    $track = $dom->createElement('track');
    $tracks->appendChild($track);
    $track->setAttribute('position', 1);
    $track->setAttribute('title', 'Wanna Be Startin\' Somethin\'');
    $track->setAttribute('length', '06:02');
     
    // Création d'une autre piste
    $track = $dom->createElement('track');
    $tracks->appendChild($track);
    $track->setAttribute('position', 2);
    $track->setAttribute('title', 'Baby Be Mine');
    $track->setAttribute('length', '04:20');
     
    // Répéter pour un nouvel album
    // ...
    $album = $dom->createElement('album');
    $albums->appendChild($album);
    $album->setAttribute('title', '9e symphonie');
    $album->setAttribute('artist', 'Ludwig Van Beethoven');
    // ...
     
    echo $dom->saveXML();
    exit(0);

    Si ça ne fonctionne pas donne le message d'erreur précis tel qu'indiqué par mathieu.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

Discussions similaires

  1. [PHP-JS] Affichage d'une galerie via un select.
    Par mLk92 dans le forum Langage
    Réponses: 9
    Dernier message: 26/07/2006, 17h24
  2. [PHP-JS] Affichage de message d'erreur
    Par lodan dans le forum Langage
    Réponses: 7
    Dernier message: 20/07/2006, 18h50
  3. [PHP-JS] Affichage d'une valeur calculée
    Par harley dans le forum Langage
    Réponses: 3
    Dernier message: 02/06/2006, 09h39
  4. Affichage de bmp pendant quelque seconde
    Par Invité dans le forum SDL
    Réponses: 3
    Dernier message: 04/05/2006, 23h08
  5. [PHP-JS] Affichage d'une image dans une popup à la taille
    Par urbanspike dans le forum Langage
    Réponses: 3
    Dernier message: 27/09/2005, 20h53

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