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 :

Includes imbriqués


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 25
    Par défaut Includes imbriqués
    Bonjour,
    voici mon problème :

    Situation
    Dans le dossier racine se trouvent 2 dossiers - admin et templates - et disons pour simplifier 2 fichiers - header.php et common.php-

    Dans le dossier admin : un fichier admin_index.php
    Dans le dossier templates : le header.tpl

    Dans mon fichier admin_index.php je mets un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    include('../common.php'); // On inclue common.php du dossier racine
    include('../header.php'); // On inclue header.php du dossier racine
    Mais dans mon fichier header.php, il y a un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $template->set_filenames(array(
    'header' => 'templates/header.tpl')
    );
    qui lie le tpl au php..

    Et quand j'essaie de lire admin_index.php il me met :
    Error - file templates/header.tpl does not exist
    alors qu'il est bien présent donc apparemment il essaie de le lire depuis admin/

    comment régler ce problème ?

    (je ne peux pas mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $template->set_filenames(array(
    'header' => '../templates/header.tpl')
    );
    car je dois aussi lire le header depuis des pages du dossier racine)


    J'espère avoir été clair

    Merci d'avance

  2. #2
    Membre émérite
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Par défaut
    Ca me parrait plutot être un problème lié à ton interprétation des chemins.....

    Quand tu fais un include dans un fichier, il importe le fichier dans ta page.

    Mais si tu fais un Include d'un fichier qui a lui aussi un Include, le 2 ème Include se fait à partir de l'enfroit ou est ta 2ème page, même si elle aussi est incluse, au final, dans ton premier fichier !!!!

    C'est une sorte de contexte "virtuel" et un contexte "réel".

    le contexte "virtuel" fait que tout les includes intègrent les pages dans la première,

    Mais le contexte "réel" fait qu'il faut que tu traites les chemins de tes include par rapport à la situation physique de la page dans laquelle tu veux faire ton Include....

    Pffffffff.... !!!!!!!

    En espérant que tu ais compris.....
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 25
    Par défaut
    euh je crois avoir compris mais pas sûr ^^

    mais concrètement que faut il que je fasse ?

  4. #4
    Membre émérite
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Par défaut
    .... Que tu revois le chemin de tout tes include par rapport au fichier courant !!!
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 25
    Par défaut
    en fait je crois que je n'ai rien compris ^^
    j'ai essayé toutes les possibilités , il n'arrive jamais à lire un des fichiers..

    dans l'exemple ci dessus , quels includes dois-je mettre pour que l'ensemble fonctionne ?

    merci.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2003
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2003
    Messages : 217
    Par défaut
    Les résolutions des chemins se font à partir du script principal, y compris pour les include...

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Par défaut
    hello,
    une méthode simple à tester pour ne jamais etre emm** par ce genre de probleme...

    créer une fichier racine... à la racine de ton site (étonnant non ?)

    en voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <php
    define( 'ROOT' , dirname( __FILE__ ) );
    // __FILE__ devrait contenir le chemin absolu de ce fichier racine, soit le chemin absolu de la racine de ton site
    ?>
    ensuite toutes tes pages publiques (c'est à dire toutes celles qui sont appelées directement par l'url) devront faire appel à cette page pour récupérer la constante.

    enfin pour terminer, dans tous les scripts, ne plus utiliser de chemins relatifs, mais des chemins de ce type :

    $fichier = ROOT . '/chemin_par_rapport_a_la_racine/fichier.ext';

    ca peut paraitre un peu lourdingue mais une fois qu'on s'y est fait, on se pose plus de questions sur les chemins d'accès des fichiers

    bon courage

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 25
    Par défaut
    Merci Petibidon !!
    J'ai de toutes façons un fichier qui est inclus partout donc j'ai rajouté la ligne dans ce fichier et j'ai updaté tous les include, tout marche bien, je peux enfin un peu organiser

    Merci

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

Discussions similaires

  1. Fichiers Include imbriqués trop profondément
    Par doogy64 dans le forum C++
    Réponses: 1
    Dernier message: 06/09/2012, 16h44
  2. [PHP 5.0] Utilisation d'include imbriqués
    Par Simon44 dans le forum Langage
    Réponses: 2
    Dernier message: 03/06/2009, 15h13
  3. Problème avec des #include imbriqués
    Par Ph.denis dans le forum C++
    Réponses: 6
    Dernier message: 16/03/2008, 10h15
  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