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] Envoi de deux header


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2007
    Messages : 38
    Points : 38
    Points
    38
    Par défaut [CSV] Envoi de deux header
    Bonjour,
    En fait j'ai fais un script de copie de catégories, produits, et image, et lorsque je copie tout ca, il se peut qu'il y ai des erreurs (il manque des images). donc ce que je voudrais, c'est qu'a la fin de l'exécution du script, si il y a des erreurs, il me crée mon fichier "Liste des produits sans image original.csv". Je ne sais pas si vous voyez le problème, mais j'avoue que je suis un peu bloqué, car j'ai fais quelque chose qui ressemble a ça :

    dans le fichier des scripts qui copie, après l'exécution de celui ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (isset($tab_prod_sans_image) && sizeof($tab_prod_sans_image)>0) {
    	get_tab_img_manquante($tab_prod_sans_image);
    }
    et le code de la fonction (dans un fichier fonction.php) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function get_tab_img_manquante($tab_pid){
    	header('Content-type: application/csv');
    	header('Content-Disposition: attachment;filename="Liste des produits sans image original.csv"');
    	echo "Nom du produit;Products_id;Emplacement de l'image;Nom de l'image;\n";
    	foreach($tab_pid as $pid){
    		/*[...] */
    	}
    }
    Donc le problème est tout simple : "header already sent" :S je sais pourquoi ça me renvoi ca ! mais je ne sais pas comment le contourné !!
    Ce que j'aimerais, ce que dans ma fonction get_tab_img_manquante envoi le fichier, mais (en gros) dans une nouvelle fenêtre, histoire qu'elle ne s'affiche pas dans la page de script...
    Je sais pas si je suis très clair, si vous avez des questions ou des suggestion, je suis tout ouïe

    J'ai une idée, mais j'aimerais tant que possible faire autrement :
    au lieu d'envoyer mon fichier directement, crée mon csv et l'écrire en dur sur le serveur, et ensuite faire un lien de la page de script de copie vers ce fichier... mais ça me dis rien, même si ça n'est pas très compliqué !

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    Salut,

    Le plus simple c'est de faire un petit ob_start en début de script.
    Comme cela tu mets en cache la sortie.

    Ensuite, si tu as des images manquantes, et que donc tu souhaites faire telecharger le fichier, tu te fais un petit ob_clean() pour vider le tampon, suivit de ob_end_flush(), pour arreter de bufferiser.
    Puis tu envoies le fichier à télécharger.
    Cela dans la fonction get_tab_img_manquante.

    Si tu n'as pas d'image manquante, tu feras un ob_end_flush en fin de script.



    Après on peut, peut-etre faire mieu en lancant le telechargement, et en affichant le contenu.
    Au lieu de ob_clean, tu fais ob_get_clean, tu stockes le résultats dans une variable globale, tu envoies le fichier à télécharger, puis tu affiches ton contenu que tu as stockés dans ta variable globale.
    Le probleme qui se pose, c'est d'indiquer au navigateur que le contenu à afficher ne fais pas partie du telechargement, et cela je doute que ce soit faisable.... Peut être avec un header HTTP 200 OK juste après la lecture du fichier... Mais sa releve de l'experimental.


    bye

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2007
    Messages : 38
    Points : 38
    Points
    38
    Par défaut
    Ok, et bien merci, j'ai essayé mais j'ai toujours un problème
    Et comme je ne connais pas (encore :p) les systèmes de cache en php, je fais utiliser la 2eme solution de faire le fichier en dur
    Merci quand même ! ça m'a donné envie d'apprendre le fonctionnement du cache!

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

Discussions similaires

  1. Envoi de deux paramètres à une fonction JS
    Par DeveloppeurWeb dans le forum ASP.NET
    Réponses: 1
    Dernier message: 10/12/2010, 12h05
  2. Envoie de deux formulaires dans le même email.
    Par michab18 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 20/10/2009, 22h41
  3. Envoi de deux formulaires
    Par midou84 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/06/2008, 14h53
  4. [CSV] Problème avec les header
    Par Invité dans le forum Langage
    Réponses: 2
    Dernier message: 25/01/2008, 18h53
  5. Réponses: 2
    Dernier message: 25/05/2004, 11h40

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