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 :

fgetcsv ne crée pas un tableau avec une ligne par colonne mais un tableau avec une seule ligne


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut fgetcsv ne crée pas un tableau avec une ligne par colonne mais un tableau avec une seule ligne
    Bonsoir,

    ma question est liée au PHP car c'est la fonction fgetcsv qui révèle le problème.

    Mon problème est le suivant : j'ai un fichier CSV constitué de N lignes. Je le lis avec le code suivant :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     while (($row = fgetcsv(self::$handle, $buffer, self::$separator, $enclosure,"")) !== false) {
                    self::$data[] = array_combine(self::$header, $row);
                }
    Donc il est nécessaire que la variable $row soit un tableau ayant le même nombre de lignes que self::$header (dans mon cas, 23) (sinon array_combine peut pas marcher). Mais si je sélectionne un certain nombre de lignes puis que j'enregistre le nouveau fichier CSV et qu'ensuite, je le lis avec le code ci-dessus, la variable $row est un tableau d'une seule ligne comportant une chaine de caractères formée de la concaténation de 23 valeurs. Peut-on me dire pourquoi ?

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 325
    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 325
    Billets dans le blog
    17
    Par défaut
    Mais si je sélectionne un certain nombre de lignes puis que j'enregistre le nouveau fichier CSV
    Tu fais ça où ? Excel ?
    Tu ne respectes probablement pas le délimiteur ou le séparateur du fichier d'origine.
    Il faudrait comparer le contenu des 2 fichiers, voir comment ils sont formés.
    (et faire attention au BOM si tu utilises Excel, mais c'est une autre histoire...)

  3. #3
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Bonsoir,

    oui, je fais ça sous Excel et tu m'as fait penser à comparer les fichiers (celui non modifié qui marche bien et celui à problème) : y a effectivement une différence.

    Le bon commence par
    "SESAID","ALTERNATEIDS","PLATFORM","PLATFORMOWNER","PUBLISHER","APPLICATIONNAME","HFMCODE","CURRENTLYACTIVE","ACTIVATEDATE","DEACTIVATEDATE","GROUPNAME","OFFICECOUNTRY","FIRSTNAME","LASTNAME","COMPANYNAME","JOBCODE","REPORTINGENTITY","BUSINESSUNITNAME","LOCATION","INTERNETADDRESS","MANAGERFIRSTNAME","MANAGERLASTNAME","MANAGEREMAIL"
    "SESA1000","(none)","Software Engineering","SESA84441","Atlassian","JIRA Global Instance","","True","Jan 01, 2021","","","Spain","Miguel","Abad","SCHNEIDER ELECTRIC ESPANA, S.A.U.","FKP8","","Global Finance","BARCELONA (BAC DE RODA)","miquel.abad@se.com","Alistair","Mckelvie","alistair.mckelvie@se.com"
    "SESA100008","(none)","EOLE","SESA36066","Sciforma","MSTT","","True","Jan 01, 2019","","","France","Bilhel","Ben Abdellah","Schneider Electric France","TYS5","","Industrial Automation","CARROS HORIZON","bilhel.ben-abdellah@se.com","Thierry","Gayout","thierry.gayout@se.com"
    etc
    
    et le pas bon par
    "SESAID,""ALTERNATEIDS"",""PLATFORM"",""PLATFORMOWNER"",""PUBLISHER"",""APPLICATIONNAME"",""HFMCODE"",""CURRENTLYACTIVE"",""ACTIVATEDATE"",""DEACTIVATEDATE"",""GROUPNAME"",""OFFICECOUNTRY"",""FIRSTNAME"",""LASTNAME"",""COMPANYNAME"",""JOBCODE"",""REPORTINGENTITY"",""BUSINESSUNITNAME"",""LOCATION"",""INTERNETADDRESS"",""MANAGERFIRSTNAME"",""MANAGERLASTNAME"",""MANAGEREMAIL"""
    "SESA1000,""(none)"",""Software Engineering"",""SESA84441"",""Atlassian"",""JIRA Global Instance"","""",""True"",""Jan 01, 2021"","""","""",""Spain"",""Miguel"",""Abad"",""SCHNEIDER ELECTRIC ESPANA, S.A.U."",""FKP8"","""",""Global Finance"",""BARCELONA (BAC DE RODA)"",""miquel.abad@se.com"",""Alistair"",""Mckelvie"",""alistair.mckelvie@se.com"""
    "SESA100008,""(none)"",""EOLE"",""SESA36066"",""Sciforma"",""MSTT"","""",""True"",""Jan 01, 2019"","""","""",""France"",""Bilhel"",""Ben Abdellah"",""Schneider Electric France"",""TYS5"","""",""Industrial Automation"",""CARROS HORIZON"",""bilhel.ben-abdellah@se.com"",""Thierry"",""Gayout"",""thierry.gayout@se.com"""
    etc
    
    donc dans le pas bon, y a trop de guillemets et le délimiteur est perdu.

    Sais-tu comment il faudrait que je fasse ? (Le but est de créer un fichier CSV fortement réduit pour les tests)

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 325
    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 325
    Billets dans le blog
    17
    Par défaut
    Tu es sûr que ton Excel met bien 1 valeur par cellule ? C'est comme si tout était sur 1 seule ligne.

    Sinon je ne sais pas comment reproduire ton format d'origine avec Excel. J'ai beau lui demander d'enregistrer avec un séparateur (virgule) et il me donne toujours des (points-virgules)... Doit y avoir un problème de locale...

  5. #5
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    En fait, chaque ligne est mise sur une seule cellule (toutes les valeurs sont cacéténées et donc on les retrouve toutes dans la même cellule). Cela dit, l'idée m'est venue une fois couché : au lieu d'agir sous Excel, je fais un copier-coller dans mon éditeur (PHPSTORM) et le tour est joué.

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 325
    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 325
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Tu es sûr que ton Excel met bien 1 valeur par cellule ? C'est comme si tout était sur 1 seule ligne.

    En fait, chaque ligne est mise sur une seule cellule (toutes les valeurs sont cacéténées et donc on les retrouve toutes dans la même cellule).
    Voilà, tout s'explique. Tu utilisais Excel comme un simple éditeur de texte, et si en plus tu lui demandes d'enregistrer ton doc comme du CSV ça ne peut pas être bon.

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

Discussions similaires

  1. remplir tableau avec une seule instruction !
    Par tlemcenvisit dans le forum C++
    Réponses: 3
    Dernier message: 21/06/2014, 18h22
  2. Une image qui ne change pas la taille d'une cellule d'un tableau
    Par guejo dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/12/2006, 14h51
  3. [HTML] boucle sur une variable et non pas un tableau
    Par delma dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/11/2006, 15h03
  4. Pas à pas dans eclipse avec une appli tomcat
    Par Mister Nono dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 07/09/2006, 09h00
  5. Plusieures infos sur une seule ligne avec ou sans tableau
    Par Him dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 17/03/2006, 14h16

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