Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 17 sur 17
  1. #1
    Invité régulier
    Inscrit en
    juin 2005
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : juin 2005
    Messages : 181
    Points : 8
    Points
    8

    Par défaut Transformer un fichier .XML en Tableau

    Bonjour tlm

    voila d'un coté j'ai : un fichier .XML comprenant un certain nombres de balises et sous balises correspondant à des modeles auto :

    Code :
    1
    2
    3
    4
    5
    6
    7
    <nom_auto>tolva 22</nom_auto>
            <marque>voldk</marque>
            <prix>8000</prix>
     
    <nom_auto>bika 44</nom_auto>
            <marque>mega</marque>
            <prix>5000</prix>

    existe t il des convertisseurs ou scripts permettant d'en générer un tableau affichant ces champs et l'image de l'auto par exemple, et qu'en cliquant sur le lien cela affiche la page avec les details du modele en question...???

    je ne suis pas spécialiste en PHP et me demandais donc si il était possible d'automatiser tout ca, comment placer les différentes balises dans un tableau cohérent...

    Merci par avance pour vos réponses

  2. #2
    Expert Confirmé Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    mai 2002
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : mai 2002
    Messages : 2 346
    Points : 2 924
    Points
    2 924

    Par défaut

    Bonjour,

    Regardes ce post dans le forum ici, celà devrait te suffire ...
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  3. #3
    Invité régulier
    Inscrit en
    juin 2005
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : juin 2005
    Messages : 181
    Points : 8
    Points
    8

    Par défaut

    bonjour

    merci de ta réponse en effet ca fonctionne bien

    par contre je bloque sur un soucis plus que basique, j'ai une balise nommée

    foreach ($xml->ad->typeProduct id="1"->test.... -

    impossible de trouver comment interpreter l espace et les guillemets....:s:s
    j'ai un peu cherché mais je n'arrive pas à l afficher, syntax error a chaque fois
    typeProduct id=\"1\" ne fonctionne pas

  4. #4
    Modérateur
    Avatar de rawsrc
    Homme Profil pro Martin
    Dev indep
    Inscrit en
    mars 2004
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Nom : Homme Martin
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 3 487
    Points : 7 957
    Points
    7 957

    Par défaut

    Salut,

    ce n'est pas une balise nommée mais plutôt un attribut de l'élément typeProduct.
    Pour lire les attributs, c'est uniquement avec foreach
    # Dans la Création, tout est permis mais tout n'est pas utile...

  5. #5
    Invité régulier
    Inscrit en
    juin 2005
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : juin 2005
    Messages : 181
    Points : 8
    Points
    8

    Par défaut

    non car en fait c'est toujours le meme ID pour chaque produit, exemple du fichier XML :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <ad_list>
    <ad>
    <id>82201761</id>
    <typeProduct id="1">Moto</typeProduct>
    <type>Occasion</type>
    </ad>
    <ad>
    <id>8234646</id>
    <typeProduct id="1">Auto</typeProduct>
    <type>Occasion</type>
    </ad>
    </ad_list>

    quelle serait la syntaxe et boucle à utiliser pour afficher les valeurs typeproduct et type s'il te plait ? j'ai beau tout essayer je n'arrive pas au résultat souhaité

  6. #6
    Modérateur
    Avatar de rawsrc
    Homme Profil pro Martin
    Dev indep
    Inscrit en
    mars 2004
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Nom : Homme Martin
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 3 487
    Points : 7 957
    Points
    7 957

    Par défaut

    Voici comment faire :
    Code :
    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
    <?php
     
    $xml = <<<XML
    <ad_list>
        <ad>
            <id>82201761</id>
            <typeProduct id="1">Moto</typeProduct>
            <type>Occasion</type>
        </ad>
        <ad>
            <id>8234646</id>
            <typeProduct id="1">Auto</typeProduct>
            <type>Occasion</type>
        </ad>
    </ad_list>
    XML;
     
    $sxml = simplexml_load_string($xml);
     
    foreach($sxml as $node) {
        $type_products[] = (string)$node->typeProduct;
        $type[]          = (string)$node->type;
    }
     
    ?>
    # Dans la Création, tout est permis mais tout n'est pas utile...

  7. #7
    Invité régulier
    Inscrit en
    juin 2005
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : juin 2005
    Messages : 181
    Points : 8
    Points
    8

    Par défaut

    ok faire passer le fichier .xml en $node et appeler chaque balise par la suite...
    par contre comment pourrais je faire pour afficher les valeurs de chaque id présent ? et je n'ai toujours pas reussi a faire afficher les valeurs des balises que ce soit avec un echo ou un print ca ne veut pas si vous avez une idée...merci par avance

  8. #8
    Modérateur
    Avatar de rawsrc
    Homme Profil pro Martin
    Dev indep
    Inscrit en
    mars 2004
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Nom : Homme Martin
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 3 487
    Points : 7 957
    Points
    7 957

    Par défaut

    Toujours dans la même logique :
    Code :
    1
    2
    3
    4
    5
    foreach($sxml as $node) {
        $product_id[]    = (string)$node->typeProduct['id'];    // valeur de l'attribut 'id'
        $type_products[] = (string)$node->typeProduct;          // valeur de l'élément 
        $type[]          = (string)$node->type;                 // valeur de l'élément
    }
    # Dans la Création, tout est permis mais tout n'est pas utile...

  9. #9
    Invité régulier
    Inscrit en
    juin 2005
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : juin 2005
    Messages : 181
    Points : 8
    Points
    8

    Par défaut

    ok merci de ta patience je vais tester ca..

    pour afficher ces valeurs en recursif désolé mais je n'arrive pas à trouver la bonne syntaxe, j'essaie avec :


    mais il me sort

  10. #10
    Modérateur
    Avatar de rawsrc
    Homme Profil pro Martin
    Dev indep
    Inscrit en
    mars 2004
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Nom : Homme Martin
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 3 487
    Points : 7 957
    Points
    7 957

    Par défaut

    Récursif ? Pas avec un foreach, c'est itératif.
    Code :
    1
    2
    3
    4
    5
    foreach($sxml as $node) {
        echo (string)$node->typeProduct['id'];    // valeur de l'attribut 'id'
        echo (string)$node->typeProduct;          // valeur de l'élément 
        echo (string)$node->type;                 // valeur de l'élément
    }
    Tu débutes en php ? c'est ça ? j'ai bon ?
    # Dans la Création, tout est permis mais tout n'est pas utile...

  11. #11
    Modérateur
    Avatar de rawsrc
    Homme Profil pro Martin
    Dev indep
    Inscrit en
    mars 2004
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Nom : Homme Martin
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 3 487
    Points : 7 957
    Points
    7 957

    Par défaut

    Tu peux aussi poster ton code en entier.
    # Dans la Création, tout est permis mais tout n'est pas utile...

  12. #12
    Invité régulier
    Inscrit en
    juin 2005
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : juin 2005
    Messages : 181
    Points : 8
    Points
    8

    Par défaut

    yes je commence a capter le principe merci....wé clairement je débute je suis plus coté infra systèmes à la base mais ait absolument besoin d'afficher ce fichier xml sous forme de tableau pour un besoin ponctuel...

    La finalité du bazar en fait : dans une première page afficher un tableau avec image+marque+produit par exemple, et en cliquant sur l'image on arrive sur le detail du produit, qui reprend le reste des caractéristiques qui sont également spécifiées dans le fichier xml...oui c'est pas gagné pour le moment =)

    un extrait du fichier xml comme proposé :

    Code :
    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
    <ad_list>
    <ad>
    <id>82201761</id>
    <typeProduct id="1">Spray</typeProduct>
    <type>Occasion</type>
    <brand>male</brand>
    <model>beynit56</model>
    <version>LIVE</version>
    <firstHand>0</firstHand>
    <category>Maquette</category>
    <price>5990</price>
    <description/>
    <comment>
    PRODUIT BON ETAT PEU SERVI
    </comment>
    <photo_list>
    <thumb>
    1-182.JPG
    </thumb>
    <photo>
    55--1-182.JPG
    </photo>
    </photo_list>
    </ad>
     
    <ad>
    <id>3457768</id>
    <typeProduct id="1">Masque</typeProduct>
    <type>Occasion</type>
    <brand>male</brand>
    <model>inita2</model>
    <version>LIVE</version>
    <firstHand>0</firstHand>
    <category>Caduc</category>
    <price>5640</price>
    <description/>
    <comment>
    PRODUIT BON ETAT PEU SERVI
    </comment>
    <photo_list>
    <thumb>
    1-182.JPG
    </thumb>
    <photo>
    55--1-182.JPG
    </photo>
    </photo_list>
    </ad>
    </ad_list>
    donc en gros je souhaiterai que sur une page j'ai mon tableau avec dans chaque case les "typeProduct+brand+thumb", et qu'en clicquant sur l'image ca me renvoie vers une page dédiée au produit, affichant le reste des balises...si tu as une idée sur tout ca ou tout du moins le début je suis preneur merci déja pour les conseils indiqués.

  13. #13
    Modérateur
    Avatar de rawsrc
    Homme Profil pro Martin
    Dev indep
    Inscrit en
    mars 2004
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Nom : Homme Martin
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 3 487
    Points : 7 957
    Points
    7 957

    Par défaut

    Allez parce que c'est le week-end :
    Code :
    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
    <?php
     
    $xml =
    <<<'XML'
    <ad_list>
        <ad>
            <id>82201761</id>
            <typeProduct id="1">Spray</typeProduct>
            <type>Occasion</type>
            <brand>male</brand>
            <model>beynit56</model>
            <version>LIVE</version>
            <firstHand>0</firstHand>
            <category>Maquette</category>
            <price>5990</price>
            <description/>
            <comment>PRODUIT BON ETAT PEU SERVI</comment>
            <photo_list>
                <thumb>1-182.JPG</thumb>
                <photo>55--1-182.JPG</photo>
            </photo_list>
        </ad>
        <ad>
            <id>3457768</id>
            <typeProduct id="1">Masque</typeProduct>
            <type>Occasion</type>
            <brand>male</brand>
            <model>inita2</model>
            <version>LIVE</version>
            <firstHand>0</firstHand>
            <category>Caduc</category>
            <price>5640</price>
            <description/>
            <comment>PRODUIT BON ETAT PEU SERVI</comment>
            <photo_list>
                <thumb>1-182.JPG</thumb>
                <photo>55--1-182.JPG</photo>
            </photo_list>
        </ad>
    </ad_list>
    XML;
     
    // lignes du tableau
    $rows = array();
    // échappement des caractères spéciaux à l'affichage
    $hsc  = function($p) { return htmlspecialchars($p, ENT_QUOTES); };
     
    $sxml = simplexml_load_string($xml);
    foreach($sxml as $node) {
        $type   = (string)$node->typeProduct;
        $brand  = (string)$node->brand;
        $thumb  = (string)$node->photo_list->thumb;
        // idée d'url pour afficher le détail
        $url    = 'http://www.site.com/product.php?id='.(string)$node->id;
        // je considère que chaque image est stockée dans un répertoire /img de ton site
        $src    = 'http://www.site.com/img/'.$thumb;
        $rows[] =
    <<<HTML
    <tr>
        <td>{$hsc($type)}</td>
        <td>{$hsc($brand)}</td>
        <td><a href="{$url}"><img src="{$src}" alt="Aperçu" /></a></td>
    </tr>
    HTML;
    }
    ?>
    <table>
        <thead>
            <tr>
                <th>Type</th>
                <th>Marque</th>
                <th>Aperçu</th>
            </tr>
        </thead>
        <tbody>
            <?php echo implode("\n", $rows) ?>
        </tbody>
    </table>
    A toi d'améliorer et de personnaliser
    # Dans la Création, tout est permis mais tout n'est pas utile...

  14. #14
    Invité régulier
    Inscrit en
    juin 2005
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : juin 2005
    Messages : 181
    Points : 8
    Points
    8

    Par défaut

    ok je tilte à peu près le code sauf cette ligne 45 qui me claque un

    Parse error: syntax error, unexpected T_FUNCTION

    la ligne 45 correspond à
    Code :
    $hsc  = function($p) { return htmlspecialchars($p, ENT_QUOTES); };

  15. #15
    Modérateur
    Avatar de rawsrc
    Homme Profil pro Martin
    Dev indep
    Inscrit en
    mars 2004
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Nom : Homme Martin
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 3 487
    Points : 7 957
    Points
    7 957

    Par défaut

    quelle est ta version de php ?
    # Dans la Création, tout est permis mais tout n'est pas utile...

  16. #16
    Modérateur
    Avatar de rawsrc
    Homme Profil pro Martin
    Dev indep
    Inscrit en
    mars 2004
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Nom : Homme Martin
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 3 487
    Points : 7 957
    Points
    7 957

    Par défaut

    Ok laisse tomber, tu dois avoir une version < 5.3
    Essaies avec ceci :
    Code :
    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
    <?php
     
    $xml =
    <<<'XML'
    <ad_list>
        <ad>
            <id>82201761</id>
            <typeProduct id="1">Spray</typeProduct>
            <type>Occasion</type>
            <brand>male</brand>
            <model>beynit56</model>
            <version>LIVE</version>
            <firstHand>0</firstHand>
            <category>Maquette</category>
            <price>5990</price>
            <description/>
            <comment>PRODUIT BON ETAT PEU SERVI</comment>
            <photo_list>
                <thumb>1-182.JPG</thumb>
                <photo>55--1-182.JPG</photo>
            </photo_list>
        </ad>
        <ad>
            <id>3457768</id>
            <typeProduct id="1">Masque</typeProduct>
            <type>Occasion</type>
            <brand>male</brand>
            <model>inita2</model>
            <version>LIVE</version>
            <firstHand>0</firstHand>
            <category>Caduc</category>
            <price>5640</price>
            <description/>
            <comment>PRODUIT BON ETAT PEU SERVI</comment>
            <photo_list>
                <thumb>1-182.JPG</thumb>
                <photo>55--1-182.JPG</photo>
            </photo_list>
        </ad>
    </ad_list>
    XML;
     
    // lignes du tableau
    $rows = array();
     
    $sxml = simplexml_load_string($xml);
    foreach($sxml as $node) {
        $type   = htmlspecialchars((string)$node->typeProduct, ENT_QUOTES);
        $brand  = htmlspecialchars((string)$node->brand, ENT_QUOTES);
        $thumb  = (string)$node->photo_list->thumb;
        // idée d'url pour afficher le détail
        $url    = 'http://www.site.com/product.php?id='.(string)$node->id;
        // je considère que chaque image est stockée dans un répertoire /img de ton site
        $src    = 'http://www.site.com/img/'.$thumb;
        $rows[] =
    <<<HTML
    <tr>
        <td>{$type}</td>
        <td>{$brand}</td>
        <td><a href="{$url}"><img src="{$src}" alt="Aperçu" /></a></td>
    </tr>
    HTML;
    }
    ?>
    <table>
        <thead>
            <tr>
                <th>Type</th>
                <th>Marque</th>
                <th>Aperçu</th>
            </tr>
        </thead>
        <tbody>
            <?php echo implode("\n", $rows) ?>
        </tbody>
    </table>
    # Dans la Création, tout est permis mais tout n'est pas utile...

  17. #17
    Invité régulier
    Inscrit en
    juin 2005
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : juin 2005
    Messages : 181
    Points : 8
    Points
    8

    Par défaut

    oui monsieur ca fonctionne bien merci bcp
    me reste plus qu'a l'adapter avec mon fichier xml en ligne et de mettre de la mise en forme. Je me pencherai après sur les pages de détail des produits.
    En effet je suis en version 5.2.17

    merci encore pour ton aide je vais continuer à tester tout ca.

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •