Bonjour à tous,

Je commence et j'essaie de vouloir lire une base XML.
J'arrive à lire un peu du document mais arrivé sur les attributs, je n'y arrive pas. -> CLUB NON TROUVE
Je ne peux apparemment pas comparé deux attributs. Comment faire ?
Mon but, est une fois la base lue, est d'écrire le joeur et ses données dans une seul table MariaDB.

Voici un extrait de mon code. Merci de votre aide.

<?php
/* Le fichier Joueurs.xml est structuré comme suit:
<?xml version="1.0" encoding="ISO-8859-15"?>
  <DONNEES>
    <JOUEURS>
      <JOUEUR JOUEUR_ID="10">
        <NOM_DE_FAMILLE>PLATINI</NOM_DE_FAMILLE>
        <PRENOM>Michel</PRENOM>
        <DATE_NAISS>21/06/1955</DATE_NAISS>
        <EQUIPE_DEBUT>
          <SIGLE>AS Nancy</SIGLE>  
        </EQUIPE_DEBUT>
      </JOUEUR>
    </JOUEURS>
    <CLUBS>
            <CLUBS_JOUEUR JOUEUR_ID="10">
            <CLUB_ACTUEL>
              <CODE>UEFA</CODE>
            </CLUB_ACTUEL>
        </CLUBS_JOUEUR>
    </CLUBS>
    <OPTIONS>
      <OPTION JOUEUR_ID="10">
        <OPTIONS_JOUEUR>
          <NUM_OPTION>1</NUM_OPTION>
          <ETRANGER>ITALIE</ETRANGER>
        </OPTIONS_JOUEUR>
        <OPTIONS_JOUEUR>
          <NUM_OPTION>2</NUM_OPTION>
          <ETRANGER>C</ETRANGER>
        </OPTIONS_JOUEUR>
      </OPTION>
    </OPTIONS>
  </DONNEES>*/
 
   
$joueurs = simplexml_load_file('datas/Joueurs.xml');
 
function lire_xml($donnees) {
    foreach($donnees->DONNEES as $datas)
    {
        foreach($datas->JOUEURS->JOUEUR as $joueur)
        {
            echo 'Nom : ' ,$joueur->NOM_DE_FAMILLE.'<br>';
            echo 'Prénom : ' ,$joueur->PRENOM.'<br>';
            echo 'Date de naissance : ' ,$joueur->DATE_NAISS.'<br>';
             
            $attributs = $joueur->attributes();
            echo 'Joueur ID : ' ,$attributs[0].'<br>';
             
            foreach($datas->CLUBS->CLUBS_JOUEUR as $clubs)
            {
                $clubsAttributs = $clubs->attributes();
                print $clubsAttributs->JOUEUR_ID.'<br>';
                 
                if ( $attributs[0] == $sectionsAttributs->JOUEUR_ID )
                {
                    print "CLUB TROUVE <br>";
                    break;
                }
                else
                {
                    print "CLUB NON TROUVE <br>";
                }
            }
        }
    }
 
?>
Bonjour
Je n'utilise pas simplexml, mais les objets DOMDocument, et je te recommande, tant qu'à faire, d'utiliser cette techno. Elle a l'avantage d'être pratiquement la même chose que la manipulation des éléments d'une page HTML en JavaScript, ce qui est indispensable quand on veut faire des choses, même relativement simples, en JavaScript, genre modifier des éléments de la page, en ajouter, etc.

En regardant ton code, je pense que les attributs ne doivent pas être désignés par leur numéros, mais par leur nom, donc

$attributs = $joueur->attributes();
echo 'Joueur ID : ' ,$attributs[0].'<br>';

te rend une chaîne vide.
Essaie

$attributs = $joueur->attributes();
echo 'Joueur ID : ' ,$attributs['JOUEUR_ID'].'<br>';

Modifié par PapyJP (09 Apr 2018 - 16:07)
Meilleure solution