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 Discussion :

exporter données au format csv (code source enregistré à la place des données)


Sujet :

PHP

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 126
    Points : 55
    Points
    55
    Par défaut exporter données au format csv (code source enregistré à la place des données)
    Bonjour à tous,

    Comme dit dans le titre, je tente d'exporter des données au format csv mais c'est mon code source qui est enregistré et non les données en question.

    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
     public function exportDetailsAction() {
     
            $fileName = "export_" . date('d-M-Y'). ".csv";
            $req = $this
                ->getDoctrine()
                ->getManager()
                ->getRepository('APPExportBundle:Export')
            ;
     
            $response = new StreamedResponse();
            $response->setCallback(function() use ($req) {
                $handle = fopen('php://output', 'w+');
     
                fputcsv($handle, ['champ 1', 'champ 2', 'champ 3', 'champ 4', 'champ 5', 'champ 6', 'champ 7', 'champ 8'], ';');
                $id = $this->getUser()->getClient()->getId();
                $start = new \DateTime($_POST['app_exportbundle_export']['start']);
                $end = new \DateTime($_POST['app_exportbundle_export']['end']);
                $lists = $req->findByParam($id, $start, $end);
                foreach ($lists as $list) {
                    fputcsv(
                        $handle,
                        [$list->getId(), $list->getName(), $list->getNameProduct(), $list->getOptions(), $list->getMin(), $list->getMax(), $list->getObject(), $list->getPrice()],
                        ';'
                    );
                }
     
                fclose($handle);
            });
    Avez vous une idée de pourquoi ?

    Merci d'avance !

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Citation Envoyé par Romenag Voir le message
    Bonjour à tous,
    Bonsoir
    mais c'est mon code source qui est enregistré
    Quel code source ? Celui que tu as donné ici ?
    Enregistré dans quoi ? Tu t’attends à récupérer le csv dans un fichier ? En l’état, ta variable $fileName n’est pas utilisée (du moins pas dans la partie de code que tu donnes). Et ton CSV est envoyé vers php://output.

    La présence de StreamedResponse me fait deviner que tu utilises Symfony. Je ne connais pas bien ce framework ; peut-être qu’il interfère au moyen d’un tampon de sortie. D’autres membres de ce forum pourront certainement donner plus de détails.

    Edit : je suppose que tu as vu cette question StackOverflow – on y trouve un code très semblable au tien. Je crois que la clé du problème est l’utilisation de php://output et que tu as simplement oublié de mettre $fileName à la place
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 126
    Points : 55
    Points
    55
    Par défaut
    Bonjour, merci pour ta réponse, oui j'utilise symfony.
    Je n'ai aucune idée de quel code ça enregistre, pas un sur lequel j'ai travaillé en tout cas.
    J'ai essayé de remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $handle = fopen('php://output', 'w+');
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $handle = fopen("export_mas_syntese_" . date('d-M-Y'). ".csv", 'w+');
    Ça n'a rien changé.
    Et je récupère bien un fichier du nom de $fileName, mais pas avec le contenu voulu...

  4. #4
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Si je résume bien, tu obtiens un fichier nommé $fileName qui contient du code PHP ? Où se trouve ce fichier exactement ? Comment tu y as accès ?
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 126
    Points : 55
    Points
    55
    Par défaut
    En cliquant sur un bouton "exporter données" relié à mon action de controller exportDetailsAction(), la fenêtre de téléchargement s'ouvre et je peux ouvrir ou télécharger le fichier..

  6. #6
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Peux-tu me montrer le code contenu dans le fichier ?
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  7. #7
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 126
    Points : 55
    Points
    55
    Par défaut
    Hello, finalement je m'en suis sortie en affichant le csv dans le navigateur au lieu de le télécharger.
    Je ne sais toujours pas d'où venait ce bug mais bon c'est résolu !
    ++

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/11/2012, 15h53
  2. Importer des données au format csv
    Par 7ider5 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/10/2012, 17h37
  3. Réponses: 2
    Dernier message: 10/12/2011, 18h40
  4. Protéger des données confidentielles dans un code source java lisible
    Par A Cherry Tells dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 09/10/2009, 17h23
  5. Crypter transit des données sans toucher au code source
    Par thecrafty dans le forum Protocoles
    Réponses: 2
    Dernier message: 08/06/2007, 17h31

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