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 :

parcours de tableau associatif export csv


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 8
    Points : 6
    Points
    6
    Par défaut parcours de tableau associatif export csv
    Bonjour,

    Mon problème est le suivant :

    J'exporte mes données provenant de ma base de données sous MySQL en fichier CSV. Les utilisateurs remplissent un formulaire, puis je fais un résumé en fichier CSV. J'ai notamment un textarea, où les utilisateurs peuvent écrire plusieurs lignes.

    Tout fonctionne niquel (connexion à la base, inscription des données dans le fichiers), cependant, j'ai des problèmes au niveau du traitement de ces données. En effet, j'ai deux soucis majeurs :

    - Retour à la ligne interprêtés dans Excel comme une nouvelle ligne à cause des "textarea".

    - J'imagine que la fonction mysql_fetch_array utilisée conjointement à mysql_assoc me permet de parcourir le tableau, mais je n'y arrive pas. En effet, mon deuxième soucis est le suivant, je ne souhaite pas tout exporter dans ma base et faire un contrôle du contenu par une expression régulière. (2° export)


    Voici mon 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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    <?php
     
    lecture_base();
     
    function lecture_base()
        {
        require "baseconfig.php";
     
        // on se connecte à MySQL
        $db = mysql_connect($cfgHote, $cfgUser, $cfgPass) or die ("Impossible de se connecter : " . mysql_error());
     
        // on selectionne la base
        mysql_select_db($cfgBase,$db);
     
        // on cree la requete SQL et on l'envoie
     
        //$sql = "SELECT * FROM spip_auteurs ORDER BY nom";
     
        $sql = "SELECT DISTINCT nom,ss_groupe,email,login,tel_fixe,fax,commentaires FROM spip_auteurs ORDER BY nom";
     
        // on envoie la requete
        $req = mysql_query($sql, $db) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
        //echo $req;
     
     
        $intitules = "nom;ss_groupe;email;login;tel_fixe;fax;commentaires\n";
     
        //On recupere les donnees de la table dans un tableau associatif.
        while ($data = mysql_fetch_array($req, MYSQL_ASSOC))
            {
            foreach($data as $value)
                {
                if(!eregi("admin[ab]",$data['Nom']))
                 {
                 $contenu .= $value.";";
                 }
                }
            $contenu .="\n";
            }
     
     
        $contenu = $intitules.$contenu;
        //echo $contenu;
     
        // on appelle la fonction de creation du csv.
        Export_Excel($contenu);
     
     
     
     
        // on ferme la connexion a  mysql
        mysql_close($db);
        return(0);
        }
     
    function Export_Excel($contenu)
        {
     
        // on dit au navigateur qu'on va travailler dans un fichier csv
     
        header("Content-Type: application/msexcel");
        header("Content-disposition: attachment; filename=utilisateurs_".date("Ymd").".csv");
     
        print $contenu;
        exit;
     
        }
     
    ?>
    Ici, j'exporte une base d'utilisateur, mais je souhaite que les administrateurs ne le soient pas... Malheureusement, ce tri ne fonctionne pas.

    Les commentaires inclus dans un textarea lors de la création du formulaire me font sauter des lignes dans Excel....


    Toute aide serait bienvenue.

    Merci.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    J'avance lentement, tout seul , mais j'avance.

    J'ai trouvé pour ne pas afficher ce qui commence par admin, il suffisait de mettre dans la requête SQL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE nom NOT LIKE 'admin%'
    Par contre, concernant l'histoire des retours à la ligne je bloque toujours; J'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    while ($data = mysql_fetch_array($req, MYSQL_ASSOC))
            {
            foreach($data as $value)
                {   
                //$contenu .= $value.";";
                $contenu .= "\"".$value."\";";
                }
            $contenu .="\n";
            }
    Je pensais que les guillemets éviteraient que le retour à la ligne soit interprété. Vu que ça n'a pas fonctionné, j'ai essayé avec un simple quote :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        while ($data = mysql_fetch_array($req, MYSQL_ASSOC))
            {
            foreach($data as $value)
                {   
                //$contenu .= $value.";";
                $contenu .= "'".$value."';";
                }
            $contenu .="\n";
            }
    Résultat : pas mieux...

    Les retours à la ligne se font tout le temps, à chaque retour à la ligne des commentaires...

    Please, Help !

  3. #3
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    je dis ca comme ca mais tu pourrais peut etre faire un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str_replace('<br/>','\n',$contenu);
    Ca aura pour but de remplacer les \n par des <br> et cela ne créra donc pas de nouvelle ligne dans excel.

    Il y a peut-être une solution plus appropriée ?

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    Merci pour le coup de main je vais essayer. Pour l'instant, j'ai changé le code en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    while ($data = mysql_fetch_array($req, MYSQL_ASSOC))
            {
            foreach($data as $value)
                {
                //$contenu .= $value.";";
                $nouveau_texte=str_replace("\n"," ",$value);
                $nouveau_texte=str_replace("\r","",$nouveau_texte);
                $contenu .= $nouveau_texte.";";
                }
            $contenu .="\n";
            }
    Ca me concatène mon texte dans une même cellule, mais ça me fait pas sauter de ligne dans la même cellule. chr(13) et chr(10) ne fonctionnent pas. J'ai essayé toutes les combinaisons possibles. Je vais voir ce que donne <br />



    edit : pas de chance, il n'interprête pas les <br />

Discussions similaires

  1. [Excel] Exporter un tableau PHP vers CSV ou XLS
    Par mariafan dans le forum Bibliothèques et frameworks
    Réponses: 20
    Dernier message: 28/10/2011, 12h53
  2. [PHP 5.2] Parcours tableau associatif
    Par Nemesis007 dans le forum Langage
    Réponses: 2
    Dernier message: 14/12/2009, 16h02
  3. Exporter un tableau excel en CSV
    Par Dan_pa dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/05/2009, 09h28
  4. Parcours de tableau associatif
    Par kanabzh29 dans le forum Langage
    Réponses: 5
    Dernier message: 31/10/2008, 13h20
  5. [Tableaux] Parcours tableau associatif
    Par damien27000 dans le forum Langage
    Réponses: 2
    Dernier message: 03/10/2007, 16h33

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