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 :

Stopper un include()


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 26
    Par défaut Stopper un include()
    Bonjour à toutes et à tous. Je suis confronté à un petit souci, je m'explique :
    J'ai un formulaire qui permet d'enregistrer des données clients. Dans ce formulaire, je laisse le choix à l'utilisateur de générer un format .ICS ou .CSV (calendrier) de la fiche qu'il vient de créer. S'il coche un des deux formats, je le récupères dans le traitement de mes données et je lance un script qui permet de générer le format désiré avec les informations rentrées...

    Voilà comment je procède :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if($exporter == "ICS")
         include("includes/exportics.php");
    header("Location:prospection.php");
    Avant ça, j'ai fait le traitement du formulaire, avec l'enregistrement des données en base et tout et avec ma petite condition cela me créé bien un fichier ICS.

    Mon problème c'est que le fichier ICS, qui contient normalement ceci :

    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
    header("Content-Type: text/Calendar");
    header("Content-Disposition: inline; filename=calendrier.ics");
    //Définition du calendrier
    echo "BEGIN:VCALENDAR\n";
    echo "METHOD:PUBLISH\n";
    echo "VERSION:2.0\n";
    echo "BEGIN:VEVENT\n";
    echo "TRANSP:OPAQUE\n";
    echo "DTEND;TZID=Europe/Paris:".substr($datequand,6,4).substr($datequand,3,2).substr($datequand,0,2)."T".$zero.($heurequand+1).$minutequand."00\n";
    if($ville == TRUE)
    	echo "LOCATION:".$ville."\n";
    echo "DESCRIPTION:".$pourquoi."\n";
    echo "SEQUENCE:0\n";
    echo "SUMMARY:Rappeler ce prospect : ".$civilite." ".$nom." ".$prenom." (".$societe.")\n";
    echo "DTSTART;TZID=Europe/Paris:".substr($datequand,6,4).substr($datequand,3,2).substr($datequand,0,2)."T".$heurequand.$minutequand."00\n";
    echo "CREATED:".$datejour."T".$heurejour."Z\n";
    echo "END:VEVENT\n";
    echo "END:VCALENDAR\n";
    Il se génère avec tout le code HTML qui a derrière (mon traitement se fait avant la balise BODY de ma page). C'est gênant car au lieu d'avoir un fichier ICS avec seulement quelques lignes, je me retrouve avec un gros fichier mélangent ICS et HTML.

    Ma question est donc la suivante, comment obliger mon include() (ou tout autre fonction) à ne générer que le code du fichier exportics.php sans rien ajouter de plus sachant que je veut absolument garder le header() qui a juste après?

    Merci de vos réponses

  2. #2
    Membre éprouvé Avatar de Cobaye
    Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 120
    Par défaut
    tu peux pas bloquer un include, un include c'est comme si tu avais ton code dans la page !

    Pour ce que tu veux faire ajouter des if

    si tu dois gérer que le fichier ICS ben ajotue des if pour que ta page ne fasse que ca

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 26
    Par défaut
    Salut et merci de ta réponse. En faîte ça se passe en quatre parties :
    1. Remplissage du formulaire (dans le BODY)
    2. Traitement et enregistrement des données (Au dessus du BODY)
    3. Génération du format ICS ou CSV si l'utilisateur l'a demandé
    4. Retour automatique au formulaire de création

    Pour le include() c'est peut-être tout simplement moi qui se plante de fonction, je ne dis pas le contraire mais dans ce cas, que devrais-je utiliser d'autres pour arriver à générer mon fichier?

    Merci de vos réponses.

  4. #4
    Membre éprouvé Avatar de Cobaye
    Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 120
    Par défaut
    Tu peux pas générer un fichier avec des headers et réafficher le formulaire en dessous.

    Après ta génération du fichier tu peux faire un exit() qui arrêtera l'exécution de ta page mais la page blanche du coup ou contenu de ton fichier

    Sinon
    Soit ta generation de fichier est un fichier à part entière et quand tu as fini ton traitement tu réaffiche le formulaire et tu fais par exemple un window.open qui va ouvrir une nouvelle page de génération de fichier

    Soit tu générer un fichier (regarde fopen), ca créer un fichier physique et tu le propose en téléchargement, ou tu l'envoie par mail ou avec un window.open tu l'ouvre (dans certain cas il le proposera en téléchargement)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 26
    Par défaut
    Ok ok. Je me demandais concernant ce code "window.open". Est-ce que ça peut fonctionner en dehors d'un onclick (sur une balise <a> par exemple)?
    Ou alors, encore mieux ! J'ai essayé le exit() à la fin du code qui se trouve dans mon include (exportics.php) mais évidemment, une fois arrivé là il arrête tout... Est-ce que je peux contourner ça en relançant le script par exemple?

  6. #6
    Membre éprouvé Avatar de Cobaye
    Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 120
    Par défaut
    a un endroit de ta page après "body" de pref rien de t'empeche de mettre
    <script type="text/javascript">window.open(...)</script>
    ton code javascript sera exécuté

Discussions similaires

  1. Problème d'include sous Dev-c++ 4.9.8.0
    Par Argonz dans le forum Dev-C++
    Réponses: 16
    Dernier message: 20/11/2003, 17h36
  2. include
    Par ronald dans le forum ASP
    Réponses: 11
    Dernier message: 06/11/2003, 14h30
  3. Stopper la répétition du clavier
    Par Chris89 dans le forum Assembleur
    Réponses: 6
    Dernier message: 17/10/2003, 20h53
  4. INCLUDE non exécuté
    Par Sadneth dans le forum ASP
    Réponses: 3
    Dernier message: 07/09/2003, 00h44
  5. #include "math.h" et #include <math.h>
    Par pounka dans le forum C
    Réponses: 4
    Dernier message: 01/05/2003, 21h06

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