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 :

Problème d'include et sous-répertoires


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 55
    Par défaut Problème d'include et sous-répertoires
    bonjour a tous,

    alors voila mon site avance tres bien mais j'ai un soucis avec la fonction "include".

    pour commencer je vous explique comment est disposer mon site :

    a la racine :

    index.php qui fait un include sur chacun des fichier suivant :
    • corps.php
    • menu.php
    • header.ph
    • footer.php


    dans le répertoire galerie :

    index.php qui fait un include sur chacun des fichier suivant :
    • corps.php qui fait appelle a un objet flash (ma galerie) présent dans ce répertoire
    • menu.php
    • header.ph
    • footer.php


    un répertoire images où sont stocké les images du design du site.

    chacun des différents fichiers php enumerer précédemment sont identiques a un détails prêt :
    les chemins vers les images (entre autres) dans les fichiers php dans la racine sont du type images/entete.jpg etc
    et ceux dans les fichiers php dans le répertoire galerie sont du type ../images/entete.jpg etc

    de cette manière du moment que je fait une modif dans mes fichiers php a la racines je suis obligé (cela va de soi) de faire les même modif dans ceux présents dans le répertoire galerie, ce qui n'est pas pratique du tout.

    du coup je voudrais ne plus avoir ces fichiers php dans le répertoire galerie et les avoir donc uniquement dans la racine. de cette manière je n'aurais plus a modifier les fichiers php présents dans tous les sous-répertoires. (j'espère que vous me suivez).

    cela doit être simple mais le plus gros de mon soucis est le suivant :
    l'objet flash qui genere ma galerie, si je l'appelle depuis un fichier présent dans la racine, l'anim va se lancer mais comme les fichiers de config ne sont pas dans la racine cela n'affiche pas ma galerie. voila en gros pourquoi j'ai mes fichiers php en double dans la racine et dans le sous-répertoire galerie.

    ma question est la suivante :

    comment peut-on faire appelle a un fichier php tout en prenant en compte l'origine de l'appel ?

    je sens que tout ce que j'ai dis n'est pas du tout clair. si vous ne comprenez pas n'hésitez pas je trouverai une solution pour retranscrire de manière plus simple mon soucis.

    merci d'avance pour toute l'aide que vous pourrez m'apporter

    cordialement Didou

    ps la solution serait de mettre tous les fichiers dans la racine mais alors la j'aurai un nombre pas possible de fichiers dans la racine et cela risque d'être un peu confus de gérer tout cela.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 297
    Par défaut
    je te conseil require() à include()

    Si ton index.php inclue des fichiers dans des répertoires, ses fichiers étant inclue dans l'index de la racine, alors le chemin partira à partir de la racine
    (l'include ou le require fait que ton fichier index contiendra les informations disséminé dans l'arborescence de ton site)

    Je pense ne pas avoir compris totalement, mais si tu avais un bout de code pour l'exemple, ou alors un shema?

    désolé, mais j'espère faire avancer le schmilblick...

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Par défaut
    je t'explique comment je fais pour remédier à ce genre de situation :

    phase 1 : création de deux variables de session, l'une contenant le chemin d'accès à la racine, l'autre contenant le chemin d'accès au répertoire galerie.

    exemple phase 1 si ma page appelante est à la racine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $_SESSION['path_racine'] = '';
    $_SESSION['path_galerie'] = 'galerie/';
    exemple phase 1 si ma page appelante est dans le répertoire galerie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $_SESSION['path_racine'] = '../';
    $_SESSION['path_galerie'] = '../galerie/';
    cette dernière instruction peut être simplifiée, mais je l'ai faite ainsi pour le cas où il y a plusieurs répertoires de niveau 1 tel que galerie

    phase 2 : je fais mes include et tous mes liens dans le menu en faisant référence à ces variables de session

    exemple d'un lien dans le fichier menu.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<a href="', $_SESSION['path_racine'], 'index.php">accueil</a>';
    MAIS : si j'ai plusieurs répertoires de niveau 1 (je considère la racine comme niveau 0), je dois créer autant de variables de sessions que de répertoires. si j'ai de nombreuses pages et que je crée un répertoire de plus, je dois rajouter une ligne dans chaque page. ce n'est pas pratique. DONC :

    phase 3 : j'ai créé une fonction à laquelle je fais systématiquement appel dans chaque page. Cette fonction créera les variables de session nécessaires.
    Exemple de ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function menu_path($niveau)
    	{
    	// chemin des répertoires
    	if ($niveau == 0)
    		{
    		$_SESSION['path_racine'] = '';
    		$_SESSION['path_galerie'] = 'galerie/';
    		}
    	elseif ($niveau  == 1)
    		{
    		$_SESSION['path_racine'] = '../';
    		$_SESSION['path_galerie'] = '../galerie/';
    		}
    	}
    phase 4 : je fais appel à cette fonction dans chaque page :
    si la page est dans le répertoire galerie, donc dans le niveau 1 :
    PS : cette fonction est stockée dans ma bibliothèque de fonctions dont l'appel se fait dans ma première instruction par un include (après session_start bien sûr).

    J'espère avoir été assez clair et avoir répondu à ton souci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 55
    Par défaut
    merci de votre aide !

    en attendant vos reponse j'ai fait une modif. au lieu d'avoir les liens du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="images/images-index/btn_galeries.jpg"
    je les ai tous modifier comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="http://www.forgotten.stars.free.fr/images/images-index/btn_galeries.jpg"
    de meme pour les liens du menu vers les differentes pages.

    du coup tout marche sans probleme et je pense que si je l'avais fait plus tot je me serai pas pris la tete comme se fut le cas.

    merci encore de votre aide.

    did

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Par défaut
    oui bien sûr ta modification fonctionne

    mais j'espère que tu la considères comme provisoire

    car elle crée deux problèmes :
    • le jour où tu changes d'hébergeur (tu quittes free par exemple) tu peux refaire tous les liens de ton site
    • tu n'as pas la possibilité de contrôler ton site et tes liens en local (et je trouve cela primordial)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 55
    Par défaut
    j'ai pensé exactement a ces 2 problemes lorsque je fait cette modif' en particulier en local.

    pour le moment c'est du provisoire mais ça ne saurait tarder où le site sera vraiment bien optimisé !

    je vais investir dans un bon bouquin de php et m'y plonger serieusement surtout concernant les sessions qui je pense une fois qu'on sait les gerer doivent regler un grand nombre de soucis.

    d'ailleur si vous pouvez me guider vers un ouvrage complet, serieux et avec pas mal d'exemples/exercices je vous en serait reconnaissant !

    merci a tous en cas pour votre patience et votre aide tant indispensable pour les debutants !

    did

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Par défaut
    je n'ai pas lu de bouquins, seulement des tutoriels ici et là

    mais les sessions c'est très simple
    tu lis http://php.developpez.com/cours/sessions/ et cela suffira

    et après tu prends le code que je t'ai indiqué plus haut et ton problème est réglé

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

Discussions similaires

  1. loadMovieNum problème d'appel de sous répertoire
    Par khalilghenimi dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 08/04/2012, 17h08
  2. [Qt]Problème d'include sous vc2005 express
    Par Cheps dans le forum VC++ .NET
    Réponses: 6
    Dernier message: 05/10/2006, 09h38
  3. Réponses: 7
    Dernier message: 12/09/2006, 14h22
  4. fichier .bat : problèmes avec des sous-répertoires
    Par aymron dans le forum Windows
    Réponses: 4
    Dernier message: 23/06/2005, 09h33
  5. 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

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