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

Langage PHP Discussion :

[CSV] Télécharger le contenu d'une variable


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Novembre 2008
    Messages : 16
    Points : 15
    Points
    15
    Par défaut [CSV] Télécharger le contenu d'une variable
    Bonjour à tous ,

    Je me demandais (j'y crois pas trop mais on ne sait jamais... ) s'il était possible en php de télécharger le contenu d'une variable "à la volée" c'est à dire sans passer par l'écriture sur le disque?
    Pour être tout à fait concret, je dois permettre aux usagers d'un site de récupérer le contenu d'un tableau statistique affiché dans une page web au format csv. Or je n'ai aucun besoin de stocker ce fichier sur le disque. j'aurai donc aimé permettre le téléchargement directement depuis la variable contenant les données de mon tableau.
    Pensez vous que cela soit faisable?

    Merci

  2. #2
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 28
    Points : 34
    Points
    34
    Par défaut
    Bonjour,

    si j'ai bien compris, oui, cela me semble possible.

    il faut tout d'abord envoyé les bonnes entêtes au navigateurs, puis envoyé le contenu du fichier. ça donnerait un truc comme ça :
    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
     
    <?php
    // il faudrat aussi préciser la taille du fichier
    $taille = strlen($ma_var);
    $nom_fichier = "le_nom_du_fichier";
     
    header("Content-Type: application/force-download; name=\"$nom_fichier\"");
    header("Content-Transfer-Encoding: binary");
    header("Content-Length: $taille");
    header("Content-Disposition: attachment; filename=\"$nom_fichier\"");
    header("Expires: 0");
    header("Cache-Control: no-cache, must-revalidate");
    header("Pragma: no-cache");
     
    echo $ma_var;
    ?>

  3. #3
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut
    Et si ton $ma_var est un tableau, tu peux faire un explode(",", $ma_var) pour que toutes tes valeurs soit séparer par des ,

    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  4. #4
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Novembre 2008
    Messages : 16
    Points : 15
    Points
    15
    Par défaut
    Merci, ça marche nickel !!

    Sauf que.. je passe ma variable en paramètre de mon url du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href='telecharge.php?nom=monNom.cvs&contenu=$monContenu'>
    et qu'il me fait sauter tous les sauts de ligne soigneusement ajoutés dans ma boucle (les "\n").

    Existe-t'il un moyen de conserver ces codes lors du passage de variable en paramètre d'url??

    Merci

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Novembre 2008
    Messages : 16
    Points : 15
    Points
    15
    Par défaut
    En fait j'ai réfléchi deux petites secondes et j'ai réglé mon problème :
    Plutôt que de passer des "\n" dans l'url je les ai remplacés par des "sautLigne".
    Comme ça, ça passe tout seul et dans mon fichier telecharge.php, il me suffit d'ajouter un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $contenuFichier = str_replace("sautLigne", "\n", $contenuFichier);


    Encore merci pour vos réponse

  6. #6
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut
    essaye avec :

    urlencode() dans l'url de ton lien

    et urldecode() dans ton fichier telecharge.php
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

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

Discussions similaires

  1. Afficher le contenu d'une variable
    Par mpat dans le forum ASP
    Réponses: 11
    Dernier message: 14/11/2005, 15h05
  2. Réponses: 7
    Dernier message: 25/10/2005, 16h19
  3. Imprimer/Visualiser le contenu d'une variable (VBS)
    Par Tartenpion dans le forum VBScript
    Réponses: 2
    Dernier message: 29/09/2005, 11h32
  4. Réponses: 3
    Dernier message: 27/07/2005, 16h12
  5. Réponses: 11
    Dernier message: 22/06/2005, 12h04

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