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 :

Télécharger un fichier csv créé par la fonction fputcsv


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Janvier 2014
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Cyberdocumentaliste
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2014
    Messages : 160
    Par défaut Télécharger un fichier csv créé par la fonction fputcsv
    Bonsoir tout le monde !
    J'ai cherché un peu comment générer un fichier .csv à partir d'une table depuis la BDD et j'ai trouvé le code suivant :
    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
    <?php
        // mysql database connection details
        $host = "localhost";
        $username = "root";
        $password = "";
        $dbname = "test";
     
        // open connection to mysql database
        $connection = mysqli_connect($host, $username, $password, $dbname) or die("Connection Error " . mysqli_error($connection));
     
        // fetch mysql table rows
        $sql = "select * from identification";
        $result = mysqli_query($connection, $sql) or die("Selection Error " . mysqli_error($connection));
     
        $fp = fopen('Export.csv', 'w');
     
        while($row = mysqli_fetch_assoc($result))
        {
            fputcsv($fp, $row);
        }
     
        fclose($fp);
     
        //close the db connection
        mysqli_close($connection);
    ?>
    Le code fonctionne bien et il génre le fichier Exports.csv ce que je veux faire c'est de créer un bouton qui rassemble toute l'opération (Création du fichier Export.csv + Téléchargement du ficher )

  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
    Par défaut
    Envoi directement les données au client :
    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
    <?php
    header("Content-type: text/csv");
    header("Content-Disposition: attachment; filename=fichier.csv");
    header("Pragma: no-cache");
    header("Expires: 0");
     
        $host = "localhost";
        $username = "root";
        $password = "";
        $dbname = "test";
     
        $connection = mysqli_connect($host, $username, $password, $dbname) or die("Connection Error " . mysqli_error($connection));
        $sql = "select * from identification";
        $result = mysqli_query($connection, $sql) or die("Selection Error " . mysqli_error($connection));
     
       while($row = mysqli_fetch_assoc($result))
        {
            echo implode(';' $row) . "\r\n";
        }
        mysqli_close($connection);
    ?>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Janvier 2014
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Cyberdocumentaliste
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2014
    Messages : 160
    Par défaut
    Merci Sabotage pour ton effort,
    Alors j'ai testé le nouveau code et j'a eu l'erreur :
    Parse error: syntax error, unexpected '$row' (T_VARIABLE) in C:\wamp\www\Suivie\test.php on line 18
    Puis j'ai ajouté une "," içi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo implode(';', $row) . "\r\n";
    - L'erreur s'affiche toujours mais au moins le fichier est génère.
    - Le fichier CSV contient les bonnes infos mais la structure n'est pas correct (Normalement on doit avoir les infos de la ligne 2 dans la ligne 1) :
    Nom : f.JPG
Affichages : 978
Taille : 44,4 Ko

    - Dernière chose : comment on peut avoir les noms des champs dans la 1ére ligne !

    Je m'excuse pour les questions Sabotage .

  4. #4
    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
    Par défaut
    Tu peux essayer comme ça pour délimiter les chaînes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '"' . implode('";"', $row) . "\"\r\n";
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Janvier 2014
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Cyberdocumentaliste
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2014
    Messages : 160
    Par défaut
    Parfait
    - Comment puisse-je ajouter les noms des champs dans la 1ére ligne ?
    - Pour contrôler les champs il me suffit juste de changer mysqli_fetch_assoc par mysqli_fetch_object et imprimer les champs que je veux ? Comme suivant ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo '"' . implode('";"', $row->champ1) . "\"\r\n";
    echo '"' . implode('";"', $row->champ2) . "\"\r\n";

  6. #6
    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
    Par défaut
    mysqli_fetch_assoc et mysqli_fetch_object font la même chose, sauf que le premier donne un tableau et le deuxième donne un objet.
    Si tu ne veux pas toutes les colonnes ne met simplement pas toutes les colonnes dans la requête.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre confirmé
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Janvier 2014
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Cyberdocumentaliste
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2014
    Messages : 160
    Par défaut
    Yup Bonne idée
    Et pour les noms des champs dans la 1ére ligne ! aucune idée ?

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

Discussions similaires

  1. Nom de fichier CSV généré par BIRT
    Par ala1986 dans le forum BIRT
    Réponses: 2
    Dernier message: 16/04/2012, 10h49
  2. [Selenium] télécharger un fichier CSV
    Par Ashen-Shugar dans le forum Tests et Performance
    Réponses: 0
    Dernier message: 16/05/2011, 11h39
  3. Réponses: 2
    Dernier message: 05/05/2010, 17h01
  4. Réponses: 8
    Dernier message: 06/05/2009, 14h53
  5. Télécharger un fichier CSV (problème de version)
    Par SPOUTNIK007 dans le forum ASP
    Réponses: 1
    Dernier message: 20/10/2006, 12h16

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