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 xml vers csv


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3
    Points : 2
    Points
    2
    Par défaut PHP xml vers csv
    Bonjour a tous,

    voici mon problème, j'ai un fichier XML d'exemple qui ressemble à cela:

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?xml version='1.0'?>
    <cars>
      <car>
        <color>blue</color>
        <price>2000</price>
      </car>
      <car>
        <color>red</color>
        <price>10000</price>
       </car> 
      <car>
       <color>black</color>
       <price>5000</price>
      </car>
    </cars>

    Et mon script PHP ressemble à cela :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?
    $filexml='cars.xml';
    if (file_exists($filexml)) {
        $xml = simplexml_load_file($filexml);
    $f = fopen('cars.csv', 'w');
    foreach ($xml->car as $car) {
        fputcsv($f, get_object_vars($car),',','"');
    }
    fclose($f);
    }
    ?>

    Cependant, je voudrais savoir quelle est la syntaxe à utiliser pour ne récupérer
    que la couleur ou que le prix?
    J'ai essayé comme ceci:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      fputcsv($f, get_object_vars($car->color),',','"');
      fputcsv($f, get_object_vars($car->price),',','"');

    Mais ça ne fonctionne pas.
    Si quelqu'un a une idée, elle est la bienvenue.
    Merci d'avance pour votre aide.

    Cordialement

  2. #2
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Points : 409
    Points
    409
    Billets dans le blog
    1
    Par défaut
    get_object_vars te permet de récupérer toutes les informations sur un objet donné (ici $car).
    Si tu veux une seule information, tu n'as pas besoin de cette fonction, il te suffit donc de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fputcsv($f, $car->color, ',', '"');

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse rapide k'amm!
    Cependant, il m'affiche le Warning suivant lors de l’exécution:

    Warning: fputcsv() expects parameter 2 to be array, object given... index.php
    Voici mon code complet:
    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
    <?php
    $filexml="cars.xml";
    $separator = ';';
     
    if (file_exists($filexml)) {
        $xml = simplexml_load_file($filexml);
    $f = fopen('reprise.csv', 'w');
    foreach ($xml->car as $car) {
        fputcsv($f, $car->color,$separator,'"');
    }
     
    fclose($f);
     
    echo"success!";
    }
    ?>
    Merci d'avance.

    Cordialement

  4. #4
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Points : 409
    Points
    409
    Billets dans le blog
    1
    Par défaut
    Mea culpa, j'ai été un peu trop rapide !
    fputcsv demande un tableau en deuxième argument
    Ce tableau correspond en fait à l'ensemble des éléments que tu souhaites avoir sur la prochaine ligne de ton fichier csv.
    Donc, si tu ne souhaites qu'une couleur par ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fputcsv($f, array($car->color),$separator,'"');

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci k'amm! Ca fonctionne parfaitement dorénavant
    Un grand merci pour ton aide!

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

Discussions similaires

  1. [XSLT] xml vers csv et lignes vides
    Par merlin83 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 01/07/2010, 17h02
  2. xml vers csv via xsl pur
    Par tofpad dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 17/03/2010, 09h35
  3. [XSLT] XML vers CSV a l'aide d'un XSL
    Par agougeon dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 02/05/2007, 14h08
  4. Réponses: 1
    Dernier message: 28/04/2006, 16h17
  5. Importation d'un fichier xml vers une BD mysql avec php
    Par naima2005 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 28/04/2006, 15h23

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