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 :

Suppression derniere colonne csv lors de l'export [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut Suppression derniere colonne csv lors de l'export
    Slt à tous,
    petit souci lors de l'export en fichier csv.
    c'est un petit script que j'ai trouvé sur le net et qui fait son boulot.
    Mon seul souci c'est qu'il inclus toutes les colonnes de la requête dans le fichier csv, alors que moi je voudrais que cela en export que certaines.

    bout de code :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    // la variable qui va contenir les données CSV
    $outputCsv = '';
     
    // Nom du fichier final
    $fileName = 'export-email.csv';
     
    $requete = "SELECT mail,letter FROM tbl_user WHERE letter='oui' ORDER BY mail";
    $sql = mysql_query($requete);
    if(mysql_num_rows($sql) > 0)
    {
        $i = 0;
     
        while($Row = mysql_fetch_assoc($sql))
        {
            $i++;
     
            // Si c'est la 1er boucle, on affiche le nom des champs pour avoir un titre pour chaque colonne
            if($i == 1)
            {
                foreach($Row as $clef => $valeur)
                    $outputCsv .= trim($clef).';';
     
                $outputCsv = rtrim($outputCsv, ';');
                $outputCsv .= "\n";
            }
     
            // On parcours $Row et on ajout chaque valeur à cette ligne
            foreach($Row as $clef => $valeur)
                $outputCsv .= trim(utf8_decode($valeur)).';';
     
            // Suppression du ; qui traine à la fin
            $outputCsv = rtrim($outputCsv, ';');
     
            // Saut de ligne
            $outputCsv .= "\n";
     
        }
     
    }
    else
        exit('Aucune donnée à enregistrer.');
    dans mon exemple il va donc importer en CSV la colonne mail et la colonne letter.

    Moi, je voudrais qu'il importe uniquement la colonne mail.

    je ne vois pas trop comment faire, un petit coup de main serait le bienvenue.

    Merci d'avance.
    @+

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    je voudrais qu'il importe uniquement la colonne mail.
    Retire le champ letter du SELECT.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    ben non justement car j'en ai besoin dans la requête pour trier mes mail

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par spawns Voir le message
    ben non justement car j'en ai besoin dans la requête pour trier mes mail
    Pas besoin que le champ soit dans le SELECT pour pouvoir faire un tri dessus.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  5. #5
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    ok nikel,
    j'ignorais pour le select
    Merci

    @+

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Ton CSV est incorrect, utilise fputcsv

  7. #7
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    Ton CSV est incorrect, utilise fputcsv
    c'est a dire ???

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par spawns Voir le message
    c'est a dire ???
    que si t'as un ", un saut de ligne, ou un ; dans l'une de tes chaines ton CSV sera incorrect, et que t’embête la vie pour quelque qui existe déjà dans PHP :
    http://php.net/manual/fr/function.fputcsv.php

    ps : fait un do...while pour créer le header

  9. #9
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    ok je vois,
    mais mes champs sont nettoyés et formatés avant d’être entrés en BDD dans le cas présent. Donc pas de surprise sur des "," saut de ligne ou autre.

    je vais quand meme regarder cette fonction de plus prés, ca peut être utile, merci pour l'info.

    @+

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

Discussions similaires

  1. Comment ne pas perdre les "0" lors d'un export en CSV
    Par olivier131 dans le forum Excel
    Réponses: 8
    Dernier message: 02/03/2017, 12h54
  2. [DisplayTag] exclure une colonne lors de l'exportation du tableau
    Par rolls dans le forum Taglibs
    Réponses: 0
    Dernier message: 15/03/2013, 15h12
  3. Réponses: 7
    Dernier message: 30/11/2011, 11h51
  4. [DisplayTag] Modifier le séparateur lors de l'export CSV
    Par ahlem83 dans le forum Taglibs
    Réponses: 2
    Dernier message: 21/10/2011, 16h18
  5. Probleme de lenteur lors de l'export CSV
    Par kodo dans le forum Langage
    Réponses: 2
    Dernier message: 08/06/2007, 11h53

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