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

PHP & Base de données Discussion :

problème export en csv [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Femme Profil pro
    chargée de mission SIG
    Inscrit en
    Juillet 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : chargée de mission SIG
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2011
    Messages : 30
    Points : 23
    Points
    23
    Par défaut problème export en csv
    Bonjour à tous,

    Alors voilà, j'ai un petit problème sur l'export en csv pour lequel je m'arrache les cheveux depuis un ptit moment, j'ai donc besoin de vos lumières !!

    J'ai à l'écran le résultat d'une requête sous forme de tableau que je peux, grâce à un ptit bouton magique, exporter au format csv.

    Mon premier problème a été qu'une ligne vide était générée entre chaque ligne. J'ai donc modifié le code (en bleu ce que j'ai ajouté) :

    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
    17
    18
    19
    if($requete == "get_all_activite_byAgent_byDate_withDate" && $date_debut != "" && $date_fin != "" && $id_agent != "")
        {
            $retour=get_all_activite_byAgent_byDate_withDate($id_agent, $date_debut, $date_fin);
            $retour=  totauxActivitePeriode($retour);
          if($export != "")
          {
            header("Content-Disposition: attachment; filename=rapport_periode.csv");
            header("Content-Type: application/vnd.ms-excel" );
           $retour=myArrayToCsv($retour);
            $retour=str_replace("\n\r","\n",$retour);
            if(substr($retour,-1)==""||substr($retour,-1)=="\n")
            $retour=substr_replace($retour,"",-1);
            print_r($retour);
          }
          else
          {
           echo json_encode(encodeUTF8DoubleArrayWithKey($retour));
          }
        }
    Après cette modification, le problème de ligne vide a été résolu, mais j'ai désormais une colonne vide qui est généré à la fin de mon tableau. J'ai dû faire une erreur quelque part ou louper quelque chose, là je sèche.

    Une idée ?

    Bonne journée ensoleillée à tous !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est la fonction myArrayToCsv() qu'il faudrait voir.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Femme Profil pro
    chargée de mission SIG
    Inscrit en
    Juillet 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : chargée de mission SIG
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2011
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Et voici :

    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
    17
    18
    function myArrayToCsv($array)
    {
        $csv="";
        foreach($array[0] as $key => $value) 
        {
            $csv.=$key.";";
        }        
        $csv.="\n\r";
        for($i=0;$i<count($array);$i++)
        {
            foreach($array[$i] as $key => $value) 
            {
                $csv.=$value.";";
            }
            $csv.="\n\r";
        }
        return $csv;
    }

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu mets un point-virgule après chaque champ, y compris le dernier, alors qu'il faudrait mettre un point-virgule entre chaque champ (donc pas après le dernier)
    La même fonction en simplifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function myArrayToCsv($array)
    {
        $csv="";
        // ligne d'entête :
        $keys = array_keys($array[0]);
        $csv .=  implode(";", $keys)."\r\n";
        // données 
        foreach ($array as $row) {
            $csv .=  implode(";", $row)."\r\n";
        }
        return $csv;
    }
    A noter que ta fonction n'utilise pas de délimiteurs de champs, donc si un de tes champs contient un point-virgule, ça va partir en cacahuète...
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre à l'essai
    Femme Profil pro
    chargée de mission SIG
    Inscrit en
    Juillet 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : chargée de mission SIG
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2011
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Niiiiiiickel !! Super !!

    Merci merci merci Celira.

    ça marche

    A++

    Clanou01

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

Discussions similaires

  1. [AC-2007] Problème export csv limité à 255 caractères !
    Par podalamina dans le forum Access
    Réponses: 15
    Dernier message: 15/10/2012, 16h03
  2. Problème d'exportation en CSV
    Par PatStan17 dans le forum C#
    Réponses: 5
    Dernier message: 04/02/2011, 05h48
  3. [SSRS 2K8] problème export csv
    Par phoenix75 dans le forum SSRS
    Réponses: 0
    Dernier message: 14/12/2009, 11h16
  4. Problème export proc tabulate ,en CSV
    Par omay59 dans le forum ODS et reporting
    Réponses: 4
    Dernier message: 22/01/2009, 01h20
  5. Problème export en CSV
    Par byters dans le forum Excel
    Réponses: 2
    Dernier message: 11/06/2008, 18h41

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