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 :

[CSV] Mettre un fichier CSV dans un tableau


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Points : 4
    Points
    4
    Par défaut [CSV] Mettre un fichier CSV dans un tableau
    Bonjour à tous,

    J'ai un souci que je n'arrive pas à résoudre malgré de nombreuses recherches.

    J'ai un fichier CSV contenant un tableau de 2 lignes.
    La premiére contient les en-têtes de mon tableau et la deuxiéme les valeurs associées.

    Je souhaite mettre tous ça dans un tableau associatif.

    En gros j'ai mon fichier qui a cette forme:

    nom;prenom;age;
    defer;phil;23;

    et je voudrais en faire ça:

    array(nom => defer, prenom => phil, age => 23)

    Ensuite j'ai une deuxiéme difficulté c'est que mon nombre de colonnes n'est pas toujours le même.

    Ces fichiers CSV me sont envoyés avec toujours la même forme et les mêmes colonnes sauf 3 qui se trouvent toujours au même endroit quand elles sont présentes.

    Explication:

    Mon fichier peut ressembler à ça:

    nom;prenom;age;
    defer;phil;23;

    Avec la possibilité de rajouter les colonnes sexe, taille ou poids entre prénom et age. Ce peut être une seule de ces colonnes où plusieures voire les trois qui, quoi qu'il arrive, seront toujours dans l'ordre indiqué ci-dessus.

    Quelqu'un a une idée ?

    Merci d'avance d'aider un pauv' codeur débutant à trouver sa voie

  2. #2
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Salut, tu peux jeter un oeil à la fonction fgetcsv : http://fr.php.net/manual/fr/function.fgetcsv.php

    Bon développement

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Bonjour

    Je connais fgetcsv et j'arrive trés bien à afficher les valeurs à l'écran dans un tableau.

    En fait le soucis est que comme je lis le fichier ligne par ligne et ensuite case par case je n'arrive pas à trouver comment écrire (case1_ligne1 => case1_ligne2) dans une boucle.


    Franchement là je séche.

  4. #4
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Ah ok, mille excuses ; je croyais que tu ne connaissais pas la méthode pour lire un fichier CSV
    Tu peux essayer ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    $handle = fopen("test.csv", "r");
    $keys   = fgetcsv($handle, 1000, ";"); // Le tableau des clés
    $values = fgetcsv($handle, 1000, ";"); // Le tableau des valeurs
    $data   = array(); // Le tableau que tu souhaites
     
    foreach ($keys as $index => $key) {
      if (!empty($key)) $data[$key] = $values[$index];
    }
    fclose($handle);
    var_dump($data);
    ?>
    Il y a peut-être des paramètres à modifier :
    - 1000 : c'est plus ou moins, suivant ton cas
    - vérifier qu'il y a bien 2 lignes
    - ...

    A personnaliser

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Ne t'excuse pas ce n'est rien

    Tu ne pouvais pas le savoir.

    Je vais essayer de partir de ça et je te tiens au jus.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Ca fonctionne impec

    Par contre je ne pige pas comment fonctionne le foreach.

    Tu pourrais m'expliquer ?

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

Discussions similaires

  1. [Toutes versions] Ventiler mon fichier .csv en plusieurs fichiers .csv
    Par X.e.N.o.N dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 10/07/2018, 05h11
  2. Réponses: 13
    Dernier message: 06/08/2013, 11h47
  3. [Visual I/O] Mettre un fichier CSV dans un tableau
    Par dissolvant dans le forum Autres IDE
    Réponses: 10
    Dernier message: 24/10/2011, 17h44
  4. Mettre un fichier csv dans un tableau à deux dimensions
    Par neeux dans le forum Général Python
    Réponses: 5
    Dernier message: 05/03/2007, 16h36
  5. Réponses: 12
    Dernier message: 07/12/2005, 18h42

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