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

Conception Web Discussion :

Arborescence de ses pages php : chemins relatifs ou absolus?


Sujet :

Conception Web

  1. #1
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 557
    Points : 286
    Points
    286
    Par défaut Arborescence de ses pages php : chemins relatifs ou absolus?
    Bonjour,

    j'essaye de recueillir quelques conseils sur l'arborescence des fichiers de mon site.

    Voilà en fait je fais des "include" du menu sur chaque page de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php include "../menu/menu.php"; ?>
    Mais ça marche que si j'ai des dossiers sur un seul niveau.

    si j'ai par exemple un dossier rub1 et un sous dossier sous_rub1.1, mes fichiers php dans ce sous dossier ne pourront pas avoir le include ../../menu/menu.php car dans mon menu.php j'ai des références sur des fichiers .css, .js etc.. (qui sont référencés eux même par des chemins relatifs).

    Vous pouvez m'aider ou me dire comment vous agencés vos pages php?

    Merci.

  2. #2
    Membre actif Avatar de polkduran
    Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2009
    Messages : 155
    Points : 275
    Points
    275
    Par défaut
    ce que je fais dans mes projets en php, c'est tout d'abord déclarer une constante, dans un fichier de config, avec le chemin absolu de la racine de mon projet et des dossier que j'utilise fréquemment, ensuite je n'ai qu'inclure le fichier de config et utiliser les constantes

    Par exemple dans la racine du projet
    config.php
    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
    $dir = dirname(__FILE__); //récupère le nom du dossier du fichier
    define('ROOT_DIR',$dir); 
    
    //chemin du dossier css
    define('CSS_DIR',ROOT_DIR.'/web/css');
    
    //chemin du dossier js
    define('JS_DIR',ROOT_DIR.'/web/js');
    
    //chemin du dossier menu
    define('MENU_DIR',ROOT_DIR.'/lib/menu');
    
    //tu peux même faire
    define('MENU_FILE',MENU_DIR.'/menu.php');

    et par la suite on inclut le config.php dans '/rub/fichier1.php'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    include "../config.php"; 
    //et pour le menu
    include MENU_FILE;
    //de manière analogue pour les css et js
    //par exemple
    include JS_DIR.'/jquery.js';
    et dans un fichier dans un sous-dossier '/rub/sous_rub/fichier2.php'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    include "../../config.php"; 
    //et pour le menu
    include MENU_FILE;
    //de manière analogue pour les css et js
    //par exemple
    include JS_DIR.'/jquery.js';
    la seule chose qui change c'est l'inclusion du fichier 'config.php', et si après tu modifie le chemin d'un fichier ou d'un dossier tu n'as qu'à modifier le config.php

    et voilà,
    bon code

  3. #3
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 557
    Points : 286
    Points
    286
    Par défaut
    Merci polkduran, ça m'étonne que les constantes prennent pour valeur l'arborescence du fichier config.php, et non pas celle du fichier php dans lequel se est appelé le include config.php.

    Je pense que ça va bien m'aider je te remercie.

  4. #4
    Membre actif Avatar de polkduran
    Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2009
    Messages : 155
    Points : 275
    Points
    275
    Par défaut
    Citation Envoyé par Marc22 Voir le message
    ça m'étonne que les constantes prennent pour valeur l'arborescence du fichier config.php, et non pas celle du fichier php dans lequel se est appelé le include config.php.
    c'est parce que quand tu fais un 'define' la valeur est fixée une fois pour toutes et même si dans la création de la constante tu utilises une variable ta constante prendra la valeur de la variable au moment de l'appel de celle-ci quand le 'define' est appelé et même si tu modifie la valeur de ta variable ta constante vaudra tjs la même chose.

    Aussi le fait d'utiliser '__FILE__' qui te donne le chemin de ton fichier, le vrai chemin même si ton fichier est inclus dans un autre fichier.

  5. #5
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 557
    Points : 286
    Points
    286
    Par défaut
    D'accord, mais on ne peut pas se servir d'un chemin absolu qui parte de la racine par exemple pour définir un fichier de style :

    menu.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <link rel="stylesheet" type="text/css" href="../style/site.css" />
    Ce fichier site.css est répertorié donc en remontant un dossier et en allant dans le dossier style.

    Si maintenant je veux inclure mon menu.php dans mes fichiers.php qui sont répertoriés ainsi :

    site/dossierAccueil/accueil.php
    site/dossierActu/actu.php

    ça marchera car il faut remonter d'un dossier pour accéder à

    site/style/site.css

    Mais si je veux créer un sous répertoire de cette façon :

    site/dossierActu/france/france.php

    l'include de mon menu.php dans la page france.php va créer des problèmes car il va interpréter la balise link du css tel quelle (comme plus haut), et ne vas remonter que d'un dossier, donc il ne le trouvera pas.

    Et en fait les chemins absolus, si ils remontent du C: ça fausse la donne je crains.

  6. #6
    Membre actif Avatar de polkduran
    Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2009
    Messages : 155
    Points : 275
    Points
    275
    Par défaut
    Tu as tout à fait raison,
    en fait j'ai oublié de dire qu'on peut avoir deux types de config (constantes); pour les fichiers au niveau système que c'est ce qu'on a vu jusqu'ici et des constantes par rapport à l'adresse du site (host)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $host = 'localhost';
    define('HOST','http://'.$host);
    define('HOST_CSS',HOST.'/web/css');
    define('HOST_JS',HOST.'/web/js');
    //ici ton host vaudra http://localhost
    et pour l'utilisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <link rel="stylesheet" type="text/css" href="<?php echo HOST_CSS.'/site.css'; ?>" />
    
    <script type="text/javascript" src="<?php echo HOST_JS.'/site.js;?>"></script>
    C'est plus confus que du html pur mais plus pratique

    c'est le même principe que pour les chemins des dossiers, n'importe dans quel fichier (même avec des chemins de dossier différents) les constantes des css et js vaudront la même chose.


    tu peux encore faire miex
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $host = $_SERVER['HTTP_HOST'];
    define('HOST','http://'.$host);
    //...
    comme ça quand tu passe de ton projet de dev (localhost) au déploiement en prod (url de ton site) pas besoin de changer ton $host

    désolé, j'avais oublié cette partie

  7. #7
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 557
    Points : 286
    Points
    286
    Par défaut
    ah non ne sois pas désolé, déjà que tu as eu la gentillesse et la patience de bien vouloir m'aider. Et avec succès parce que ça fonctionne impeccablement !

    Je te remercie grandement parce que je ne savais plus comment faire.

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

Discussions similaires

  1. [MySQL] Sécurisé ses pages PHP
    Par StiriX dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 13/08/2009, 11h11
  2. Chemins relatifs et absolus sur hébergeur
    Par faamugol dans le forum Langage
    Réponses: 2
    Dernier message: 16/12/2008, 21h40
  3. [Wamp] Tester ses pages PHP ?
    Par fred59 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 21/02/2007, 11h40
  4. [PHP-JS] Comment organiser ses pages pour un gros site?
    Par ChriGoLioNaDor dans le forum Langage
    Réponses: 4
    Dernier message: 09/02/2007, 14h08
  5. Booster ses pages php 4 ?
    Par GarGamel55 dans le forum Langage
    Réponses: 5
    Dernier message: 01/03/2006, 23h12

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