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

Bibliothèques et frameworks PHP Discussion :

[PDF] Probleme avec les include


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Janvier 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 101
    Par défaut [PDF] Probleme avec les include
    Bonjour

    J'ai un fichier php (A.php par exemple) qui réalise certaines opérations, et dont je récupère le résultat depuis un autre fichier (main.php) de cette manière :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //dans le fichier main.php
    function get_data()
    {
    <div style="margin-left:40px">include("A.php");
    return (une variable provenant de A.php);</div>}
    A chaque appel de get_data() les variables de A.php ont une portée interne à la fonction et sont donc détruites au return de la fonction get_data(), cependant les fonction de A.php ont une portée globale. C'est la que vient mon problème.
    Depuis main.php j'ai besoin d'apeller get_data() plusieurs fois.
    Cela marche bien lorsque la function get_data() est appelée une première fois, mais les fois suivantes => problème de redéclaration de fonction.
    Je précise que mettre include_once() ne résout pas mon problème car dans ce cas le fichier A.php n'est executé qu'une fois et pas à chaque appel de get_data().

    Le problème est assez ciblé (j'espère l'avoir bien décrit) mais je vois pas de solution simple. Avez vous une idée ?

    Merci beaucoup de votre aide

  2. #2
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    Salut,

    Je ne sais plus si les erreurs de redéclarations sont des Notice ou Warning. Si se sont des Notice, mets juste un @ devant la fonction pour masquer l'erreur.

    Sinon est ce que ce ne serait pas possible d'inclure le fichier A.php avant toute fonction (dont get_data()) dans main.php, mais de rendre global les variables s'y trouvant pour les rendre disponibles aux fonctions qui suivent (dont get_data()) ?


  3. #3
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Par défaut
    pourquoi ne pas initialiser tes variable de A à false ou '' ?!

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Janvier 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 101
    Par défaut
    Merci de vos réponses mais ce n'est pas si simple en fait. Dans le fichier A.php, il y a plusieurs opérations effectuées qui dépendent d'un paramètre de get_data().

    Plus précisément cela est réalisé de cette façon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //dans le fichier main.php
    function get_data($parametre)
    {
          include("A.php");
          return (une variable provenant de A.php); 
    }
    A.php utilise la variable $parametre pour creer le resultat.

    Le fichier A.php peut être executé seul (par requete http simple), il trouve son parametre dans $_GET et renvoi le resultat sur la sortie standard.
    Dans le cas ou il est executé par un autre fichier, il ne renvoi rien sur la sortie standard, la fonction get_data me permet de récupérer le résultat. Ca aurait pu marcher trés bien avec file_get_contents mais je suis en safe_mode et je ne peux pas me servir de cette fonction.

  5. #5
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    J'ai tilté sur une chose que j'ai pas compris:

    Cela marche bien lorsque la function get_data() est appelée une première fois, mais les fois suivantes => problème de redéclaration de fonction.
    Pourquoi tu redéclares la fonction plusieurs fois? Elle peut être appelée X fois sans problème de rédéclaration ?

  6. #6
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    dans le fichier A.php dissocie fonction et usage. Et pour appeler tes fonctions utilise un require_once dans A.php.

    Tu as un sérieux souci de conception.

  7. #7
    Membre confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Janvier 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 101
    Par défaut
    en reposant mon probleme de facon différente :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function f1()
    {
          function f2()
          {
                ....
          }
    }
    Dès l'appel de f1(), f2() est déclarée et a donc une portée globale, elle peut donc être appellé à volonté hors de f1(). Si f1() est apellée de nouveau, f2() est alors redéclarée => mon problème.
    Plus d'explications : http://fr.php.net/manual/fr/language.functions.php
    Une solution à mon problème : réduire la définition de f2() à l'interieur de f1() seul. Mais comment faire ?

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

Discussions similaires

  1. probleme avec les charts(affichage du digramme en pdf)
    Par ergo_proxy dans le forum Jasper
    Réponses: 3
    Dernier message: 30/12/2011, 13h25
  2. [Api Mysql] Probleme avec les includes
    Par Arkolos dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 25/11/2009, 21h25
  3. Réponses: 3
    Dernier message: 16/04/2009, 08h56
  4. problem avec les generations de fichier pdf
    Par stephv dans le forum Access
    Réponses: 7
    Dernier message: 03/03/2006, 08h15
  5. probleme avec les processus
    Par saidi dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 05/02/2003, 00h18

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