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 :

[PHP-JS] Problème avec include


Sujet :

Langage PHP

  1. #1
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut [PHP-JS] Problème avec include

    J'ai une page d'accueil dans laquelle je fais 3 include php : un pour le header (la balise head en fait), un pour le menu déroulant et un pour le footer.
    j'ai des rubriques et sous-rubriques qui sont classés par dossier (larborescence du site est celle des dossier en fait).

    On dit qu'il vaut mieux éviter les liens absolus or en faisant mes 3 includes dans chacunes de mes pages, je suis obligé de faire des liens absolus vers les CSS, les images, les javascript ... ou alors je suis obligé de les copier dans le répertoire de la page courante.

    La question est la suivante : que faire ?
    des liens absolus et si un jour le site change d'arborescence, je passe 1 mois à refaire tous mes liens (car ils risquent d'y avoir une énorme quantité de pages) ?
    des liens relatifs et je fait une copie dans chaque dossier ce qui est très très très très lourd ?

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de MasterOfChakhaL
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2004
    Messages
    2 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 147
    Points : 3 264
    Points
    3 264
    Par défaut
    Si tu es en php,

    je te conseille de définir une constante qui représente le chemin absolu vers les répertoires qui t'interessent

    tu peux mettre ces constantes dans un fichier a la racine de ton domaine.
    tu inclus ensuite ce fichier dans toutes tes pages via un include
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    N'oubliez pas de cliquer sur quand votre question à trouvé une solution.

    Si vous n'avez pas encore lu les règles du club, mieux vaut tard que jamais!

  3. #3
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    je ne vois pas trop ce que tu veux dire là (j'ai l'impression que c'est une peu ce que je fait en fait).
    J'ai trouvé une solution qui me calcule le nombre de slash entre le dossier courant et le dossier de mon choix et qui, pour chaque slash, me concatène "../" à une variable ce qui me permet de remonter d'autant de dossier qu'il faut. Après il ne me reste plus qu'à mettre le chemin vers le dossier que je souhaite atteindre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $chemin_complet=$_SERVER['SCRIPT_FILENAME'];//Le chemin absolu vers le fichier contenant le script en cours d'exécution.
     
    $chemin_racine=substr($chemin_complet,strpos($chemin_complet,"dossier_au_choix")); //chemin entre le fichier courant et le dossier au choix
     
    $nb=substr_count($chemin_racine,"/");//$nb contient le nb de / contenu dans chemin (donc le nombre de dossier qu'il faut traverser avant d'arriver à MA racine web)
    $i=1; //boucle (elle commence à 1 car $nb contient un / de trop par rapport au nombre de dossier à traverser
    $up=""; //concaténation de 1 ou plusieurs "../" correspondant au nombre de fichiers à remonter pour arriver à la racine web
    while ($i<$nb) //pour chaque / dans chemin, on concatène un ../ dans up
    {
    	$up.="../";
    	$i++;
    }
    mais ça me parait bancal donc j'aurais voulu savoir s'il y avait une autre solution.

  4. #4
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?
    define("BASEDIRFILE","/var/www/dossier1/sousdossier1/");
    ?>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?
    include(BASEDIRFILE."fichier1.php");
    ?>

  5. #5
    Rédacteur
    Avatar de MasterOfChakhaL
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2004
    Messages
    2 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 147
    Points : 3 264
    Points
    3 264
    Par défaut
    non non, ce n'est pas ca ce que je dit...

    exemple:
    arborescence de ton site:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    .
    ..
    style[rep]
    image[rep]
    pages[rep]
    index.php
    constant.inc
    etc.
    constant.inc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    define ( 'ROOT', 'ton_nom_de domaine' );
    define ( 'CSS_PATH', ROOT . 'style/' );
    define ( 'IMAGE_PATH', ROOT . 'image/' );
    ?>
    Puis dans tes pages tu commences par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <?php
    include_once ( $_SERVER['SERVER_NAME'] . 'constant.inc' );
    Si tu laisses constant.inc a la racine, tu peux maintenant utiliser ces constantes et ne maintenir que le fichier constant.inc si il y a une évolution dans ton arborescence
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    N'oubliez pas de cliquer sur quand votre question à trouvé une solution.

    Si vous n'avez pas encore lu les règles du club, mieux vaut tard que jamais!

  6. #6
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    C'est exactement ce qu'il me fallait.
    C'est vraiment excellent ça, dommage que ça ne soit pas plus répandu sur le Net, j'ai regardé des tuto et tout et c'est jamais indiqué.
    Merci à toi Maitre des Chacals et à toi aussi Jos le Bisounours

  7. #7
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    re,
    j'ai "dé-résolu" car ça marche mais il y a un problème, ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include_once ( $_SERVER['SERVER_NAME'] . 'constant.inc' );
    me donne mon adresse e-mail or mon adresse e-mail et ma racine n'ont pas du tout le même nom.
    Il y a une solution ou je suis obligé de tout faire en dur?



    [edit]

    J'ai un fichier index.php qui contient ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    include_once ("mon_chemin/constant.inc");
    include (ROOT."header.php");
    un fichier constant.inc contenant ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    define ( 'ROOT', 'https://www.mpl.ird.fr/IS/' );
    define ( 'CSS_PATH', ROOT.'style/' );
    define ( 'IMAGE_PATH', ROOT.'img_ur_vf/' );
    define ( 'JS_PATH', ROOT.'js/' );
    ?>
    et le fichier header.php qui contient ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php include_once ("/data/www/www.mpl.ird.fr/Web_pole-science/constant.inc");
    	echo ("<link rel=\"stylesheet\" href=\"".CSS_PATH."text.css\" type=\"text/css\" />
    	<link rel=\"shortcut icon\" href=\"".IMAGE_PATH."logo.ico\"/>		
    	<script language=\"JavaScript\" src=\"".JS_PATH."trans_image.js\" type=\"text/javascript\"></script>
    	<script language=\"JavaScript\" src=\"".JS_PATH."menu_deroulant.js\" type=\"text/javascript\"></script>");
    	?>
    Suis-je obligé de rappeller include_once ("mon_chemin/constant.inc"); dans mon header.php ? (je pose la question car sur mon serveur local PHP 5.1.3 je ne le faisait pas et ça marchait et maintenant que je suis sur un serveur en ligne avec PHP 4.3.7 il faut que je le remarque dans le header sinon mes variables sont interprétées comme du texte.

  8. #8
    Rédacteur
    Avatar de MasterOfChakhaL
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2004
    Messages
    2 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 147
    Points : 3 264
    Points
    3 264
    Par défaut
    En fait, ce serait plutot $_SERVER['HTTP_HOST'] qu'il faudrait utiliser...

    Pour tes histoires d'include, il faut le faire dans un script qui sera forcément analysé a chaque page.

    Si tu passes forcément par index.php quelque soit la page affichée, alors oui, c'est là qu'il faut le mettre.

    Sinon, pour simplifier le truc, tu peux mettre le constant.inc dans le répertoire d'include si tu en as les droits...

    Par exemple, si tu es hébergé chez free, il te suffit de créer le répertoire include a la racine de ton espace perso et d'y placer le fichier.
    Tu pourras ensuite l'inclure via la commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include_once('constant.inc');
    L'interpréteur PHP vérifiera d'abord si constant.inc est présent dans le répertoire courant, si ce n'est pas le cas, il ira vérifier dans le répertoire d'include
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    N'oubliez pas de cliquer sur quand votre question à trouvé une solution.

    Si vous n'avez pas encore lu les règles du club, mieux vaut tard que jamais!

  9. #9
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    Au risque de devenir lourd mais là il y a des trucs qui me turlupinent

    J'ai mis le fichier constant.inc dans un dossier include (puis includes) ça ne marche pas du tout donc je l'ai laissé à la racine (/ird/)
    Sur ma page d'accueil je fais ceci ird/index.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ($_SERVER['HTTP_HOST']=="127.0.0.1") include_once ( $_SERVER['DOCUMENT_ROOT']. '/ird/include/constant.inc' );  /*pour le local utiliser*/ 
    else include_once ("constant.inc"); /*pour le serveur utiliser :*/
    include (ROOT."header.php");
    ird/include/constant.inc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    if ($_SERVER['HTTP_HOST']=="127.0.0.1") define ( 'ROOT', $_SERVER['DOCUMENT_ROOT'].'/ird/' );
    else define ( 'ROOT', $_SERVER['HTTP_HOST'].'/IS/' );
    define ( 'CSS_PATH', ROOT.'styles/' );
    define ( 'IMAGE_PATH', ROOT.'img_ur_vf/' );
    define ( 'JS_PATH', ROOT.'js/' );
    ?>
    Ceci fonctionne sur le site en ligne mais pas en local (il n'apprécie pas le chemin absolu : <link rel="stylesheet" href="c:/program files/easyphp1-8/www/ird/styles/text.css" type="text/css" /> et si je mets le chemin à partir de ma racine web href="/ird/styles/text.css" , le problème est le même (ce problème apparait sous FF et Opera, sous IE ça fonctionne)) mais ça c'est secondaire.
    J'ai un lien sur la page d'accueil et quand j'y vais dessus, ça m'ouvre une page ird/archives/index.php dans la quelle j'ai la même entête que ird/index.php. Le problème c'est qu'à ce moment là, il ne me détecte plus include_once ("constant.inc"); alors que tu m'as dit qu'il devait aller le chercher automatiquement dans le dossier include.

    C'est là que je bloque sérieusement

  10. #10
    Rédacteur
    Avatar de MasterOfChakhaL
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2004
    Messages
    2 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 147
    Points : 3 264
    Points
    3 264
    Par défaut
    Bon, je voulais un peu simplifier le truc, mais apparemment, ca ne le fait pas.
    Voilà ce que j'utilise et qui ne ma jais posé problème jusqu'à maintenant.

    (Je l'avais récupérér dans le projet opensource mantisBT)

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    /* ************************* */
    /* CONFIGURATION DES CHEMINS */
    /* ************************* */
     
    // Chemin de la racine comme le voit le browser
    if ( isset ( $_SERVER['PHP_SELF'] ) ) {
        $t_protocol = 'http';
        if ( isset( $_SERVER['HTTPS'] ) && ( strtolower( $_SERVER['HTTPS'] ) != 'off' ) ) {
            $t_protocol = 'https';
        }
        // $_SERVER['SERVER_PORT'] is not defined in case of php-cgi.exe
        if ( isset( $_SERVER['SERVER_PORT'] ) ) {
            $t_port = ':' . $_SERVER['SERVER_PORT'];
            if ( ( ':80' == $t_port && 'http' == $t_protocol )
                  || ( ':443' == $t_port && 'https' == $t_protocol )) {
                $t_port = '';
            }
        } else {
            $t_port = '';
        }
        if ( isset( $_SERVER['HTTP_HOST'] ) ) {
            $t_host = $_SERVER['HTTP_HOST'];
        } else if ( isset( $_SERVER['SERVER_NAME'] ) ) {
            $t_host = $_SERVER['SERVER_NAME'] . $t_port;
        } else if ( isset( $_SERVER['SERVER_ADDR'] ) ) {
            $t_host = $_SERVER['SERVER_ADDR'] . $t_port;
        } else {
            $t_host = 'www.example.com';
        }
        $t_path = dirname( $_SERVER['PHP_SELF'] );
        if ( '/' == $t_path || '\\' == $t_path ) {
            $t_path = '';
        }
        $g_path = $t_protocol . '://' . $t_host . $t_path.'/';
    } else {
        $g_path = 'http://www.example.com/';
    }
     
    // chemin absolu de la racine
    $g_absolute_path = dirname( __FILE__ ) . DIRECTORY_SEPARATOR;
    Il faut que ce morceau de code se trouve à la racine de ton espace.
    $g_path, te donne la racine en http:// ....
    $g_absolute_path, ben le nom est parlant...

    Si tu as des soucis, je te conseille de demander à un modérateur de déplacer ton topic dans le forum PHP, tu auras certainement plus d'aide là-bas...

    Amuse toi bien...
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    N'oubliez pas de cliquer sur quand votre question à trouvé une solution.

    Si vous n'avez pas encore lu les règles du club, mieux vaut tard que jamais!

  11. #11
    Membre averti Avatar de LhIaScZkTer
    Inscrit en
    Mai 2004
    Messages
    564
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2004
    Messages : 564
    Points : 301
    Points
    301
    Par défaut
    Bonjour,

    C'est ici les question php ?

    c'est bon je sors.
    Sun Certified Java Programmer, SE 6 et Sun Certified Web Component Developer, J2EE 5

  12. #12
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    Pour tes includes utilise le chemin physique et non pas virtuel... .. .

    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
    <?php
    // si ce code est à la racine de ton site, 
    // s'il est dans un sous rep tu fais dirname(dirname(_FILE__))
    define('MAIN_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR);
    
    // ensuite tu définis tout les path vers des rep importants genre...
    define('INC_PATH', MAIN_PATH.'includes'.DIRECTORY_SEPARATOR);
    define('CLASS_PATH', MAIN_PATH.'class'.DIRECTORY_SEPARATOR);
    //... etc ...
    
    // pour tes include,require & co utilise 
    // toujours DIRECTORY_SEPARATOR et non pas / ou \
    include(INC_PATH.'sous_rep'.DIRECTORY_SEPARATOR.'mon_fichier.php');
    ?>
    Après tu peux aussi définir une constante avec l'url de ton site pour tout ce qui concerne les liens, images, etc... .. .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img src="<?php echo SITE_URL; ?>images/mon_image.gif" alt="mon image" title="mon image" />
    @ tchaOo°

  13. #13
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    le problème avec ta solution kankrelune c'est que si j'utilise le chemin physique c'est pas bon, il ne me le prend pas en compte.Je veux dire par là qu'il ne me prend plus en compte les liens qui l'utilisent. Par contre si j'utilise l'adresse virtuelle c'est bon.
    Tu vois d'où peut venir le problèlme ?

  14. #14
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    Qu'est ce qu'il ne prend pas en compte... l'include échoue, il ne trouve pas le fichier... tu as un message d'erreur... .. ?

    @ tchaOo°

  15. #15
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    je vais tout te mettre à plat et tu pourras me dire d'où ça vient peut-être.

    Alors récapitulatif :
    j'ai un dossier racine qui contient un fichier noyau.php qui fait tous les includes. Ce fichier est appellé par un fichier accueil.php qui est au même niveau que noyau.php (je fais include "noyau.php"). Il est également appelé par un fichier archives.php qui est dans un sous-répertoire (je fais donc include "../noyau.php").
    ce fichier (noyau.php) fait un include du fichier constant.inc qui contient toutes mes constantes.
    Là il y a 3 possibilités :
    constant.inc V.1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    define ( 'ROOT', $g_path ); //$g_path étant celui du code de MasterOfChakhaL = c'est l'adresse internet du dossier courant
    define ( 'CSS_PATH', ROOT.'styles/' );
    define ( 'IMAGE_PATH', ROOT.'img_ur_vf/' );
    define ( 'JS_PATH', ROOT.'js/' );
    dans ce cas là, ma page accueil.php s'affiche nickel (les photos, la CSS, les includes de mes entêtes et pied de pages,... tout va bien) et la page archive.php foirent complètement (normal puisque $g_path "descend" d'un niveau dans l'arborescence et les dossier qu'il cherche sont un niveau plus haut). Là c'est normal.

    Moins normal :
    constant.inc V.2 et V.3 (je mets les 2 en même temps, mais bien entendu, l'un est en commentaire quand l'autre ne l'est pas)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //V.2 define ( 'ROOT', '/****/' );
    //V.3 define ( 'ROOT', 'http://www.mpl.ird.fr/IS/' );
    define ( 'CSS_PATH', ROOT.'styles/' );
    define ( 'IMAGE_PATH', ROOT.'img_ur_vf/' );
    define ( 'JS_PATH', ROOT.'js/' );
    Dans le cas V.2, mes includes fonctionne bien, mais mes liens vers mes CSS, images et javascript ne marche pas alors que le chemin physique est correct, c'est exactement la concaténation de ROOT et styles/ pour les CSS, ... il ne manque pas de slash, il n'y en a pas en trop ni rien. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <link rel="stylesheet" href="/****/styles/text.css" type="text/css" />
    <link rel="shortcut icon" href="/****/img_ur_vf/logo.ico"/>		
    <script language="JavaScript" src="/****/js/trans_image.js" type="text/javascript"></script>
    <script language="JavaScript" src="/****/js/menu_deroulant.js" type="text/javascript"></script
    Dans le cas de V.3, le résultat est le même mis à part qu'il ne me convertit plus mes constante CSS_PATH,IMAGE_PATH, ... il me les laisse tel quel. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <link rel="stylesheet" href="CSS_PATHtext.css" type="text/css" />
    <link rel="shortcut icon" href="IMAGE_PATHlogo.ico"/>		
    <script language="JavaScript" src="JS_PATHtrans_image.js" type="text/javascript"></script>
    <script language="JavaScript" src="JS_PATHmenu_deroulant.js" type="text/javascript"></script>
    Si tu me trouves une solution, ... j'aurais un respect envers toi que je n'ai jamais eu envers personne, même pour mon père je crois

    [edit]Apparemment c'est du au fait que j'utilise ces constantes dans mon entêtes, mon pied de page, ... et que la portée ne va pas si loin (car mon entête, par exemple, est inclue par accueil.php après que accueil.php est inclu noyau.php qui inclu à son tour constant.inc ) pourtant dans le cas V.1 ça marche.

  16. #16
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    Franchement je trouve que tu te complique la vie... à moin que ton site soit une appli de centaine de fichier avec des dizaines de milier de lignes de code ça sert à rien de tout séparer dans des dizaines de fichiers différent tu risque de t'y perdre comme dans le cas présent... .. .

    Toute les page de ton site utilise certaines routines en commun... on est d'accord donc toutes ces routines (sauf quelques unes genre la définition des fonction) tu les fais dasn un fichier qui se trouve à la racine de ton site... appelons le header.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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    <?php 
     
    // tu definis tes path physiques
    define('MAIN_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR);
    define('INCLUDES_PATH', MAIN_PATH.'includes'.DIRECTORY_SEPARATOR); define('CLASS_PATH', MAIN_PATH.'class'.DIRECTORY_SEPARATOR); 
    define('MODULES_PATH', MAIN_PATH.'modules'.DIRECTORY_SEPARATOR); 
    // etc ...
     
    // tu définis tes path virtuels
    define('SITE_URL', 'http://www.ton_site.ext/');
    define('IMG_URL', SITE_URL.'img/');
    define('THEME_URL',SITE_URL.'style/');
     
    // ensuite tu fais tes inclusions
    include(INCLUDE_PATH.'functions.php'); // fonctions commune à tes pages
    include(INCLUDE_PATH.'unAutreFichier.php'); 
    include(CLASS_PATH.'database.php'); // si tu utilise une class d'abstraction db
    include(CLASS_PATH.'users.php'); // si tu utilise une class de gestion des membres
    // etc...
     
    // ensuite tu lance tes routine tel que la connection à la base de donnée
    $db = new database('mysql',$server,$username,$password);
    // ou si tu n'utilise pas la poo
    $db = mysql_connect($server,$username,$password);
    //selection de ta base de données récupération de ta config
    // identification du membre (est il connecté, a t il accès à cette page)
    // etc...
     
    ?>
    <!-- pour finir tu peux envoyer le code html de l'entête de ton site -->
    <html>
    <body>
     <head>
    etc... .. .
    un fichier footer.php qui lui sert à tout fermer... pareil à la racine de ton site... .. .

    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
    19
    20
    21
    22
     
    <?php
     
    // au cas ou un petit malin va directement dessus
    if(!defined('MAIN_PATH')) 
       die(); 
     
    // on ferme la connection à la base de donnée
    $db->close(); ou mysql_close(); selon si tu es en poo ou pas
     
    // divers traitement que tu peux avoir à faire en fin de page
     
    ?>
    <!-- le footer html de ton site -->
    </body>
    </html>
    <?php
     
    // on vide les buffer si il on été enclenché
    ob_end_flush();
     
    ?>
    ensuite dans toutes les pages de ton site tu fais...

    /page.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
     
    require('header.php');
     
    // tes routines de traitement et d'affichage des données de la page
    include(INCLUDE_PATH.'fonctionDeLaPageX.php');
    echo uneFonctionX();
     
    require(MAIN_PATH.'footer.php');
     
    ?>
    /un_rep/une_autre_page.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
     
    require('..'.DIRECTORY_SEPARATOR.'header.php');
     
    // tes routines de traitement et d'affichage des données de la page
    include(INCLUDE_PATH.'fonctionDeLaPageY.php');
    echo uneFonctionY();
     
    require(MAIN_PATH.'footer.php');
     
    ?>
    etc, etc... .. .

    Comprend tu le principe... il faut structurer tes page et centraliser les routines communes à toutes tes pages... concernant tes includes ensuite il n'y a que le chemin du header qui change en fonction d'où se trouve la page... pour les autres include, require tu utilise tes constantes sans te poser de question... .. .

    Si tu as des questions... .. .

    @ tchaOo°

  17. #17
    Rédacteur
    Avatar de MasterOfChakhaL
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2004
    Messages
    2 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 147
    Points : 3 264
    Points
    3 264
    Par défaut
    pour les css et javascript, il te faut un src en relatif ou en http://.. (presque certain mais je ne préfère pas affirmer)

    Dans ton cas, après avoir relu un peu tout ca...
    Je prendrais le V3 et je mettrai les constantes en concatenant (seules les variables sont interprétées entre " " pensè-je)

    De plus, tu n'as pas le droit définir la valeur d'une constante avec une variable (cf V2), tu avoueras que ce n'est pas très logique...
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    N'oubliez pas de cliquer sur quand votre question à trouvé une solution.

    Si vous n'avez pas encore lu les règles du club, mieux vaut tard que jamais!

  18. #18
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    tu veux que je te dises : j'ai une larmichette à l'oeil tellement c'est simple et beau quand tout fonctionne et qu'on t'explique tout bien comme il faut
    ça fonctionne, c'est énorme !!!!

    En fait j'avais un gros problème : c'est que je voulais tout rendre dynamique mais c'est impossible, il faut à un moment ou un autre donner un nom en dur.
    Je me suis également emmélé avec les chemins virtuels et ceux physiques (j'ai encore du mal à dicerné quand utiliser lequel mais bon je pense que ça viendra).

    En tout cas, un EEENOOOOOOOOORRRME merci à MasterOfChakhaL et à kankrelune (et à toi aussi Bisounours ).

    PS : j'aurais bien mis le "enorme merci" en size 15 mais j'avais peur de me faire escamper après

  19. #19
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par trotters213
    Je me suis également emmélé avec les chemins virtuels et ceux physiques (j'ai encore du mal à dicerné quand utiliser lequel mais bon je pense que ça viendra).
    C'est pas dur... l'url de ton site tu l'utiliser juste pour ton html (liens, balises d'images, css, javascript) pour le reste (php => inclusion, ouverture/ecriture de fichier, etc...) sauf cas très exeptionel tu utilise le chemin physique... .. .

    @ tchaOo°

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

Discussions similaires

  1. [PHP-JS] Problème avec include
    Par Gunner4902 dans le forum Langage
    Réponses: 3
    Dernier message: 30/11/2007, 10h22
  2. [PEAR][DB] Problème avec include DB.php
    Par xclam dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 12/06/2007, 17h15
  3. [PHP-JS] problème avec include
    Par UN|X` dans le forum Langage
    Réponses: 4
    Dernier message: 08/03/2007, 16h57
  4. problèmes avec "include file" pour une page asp
    Par chipsense dans le forum ASP
    Réponses: 1
    Dernier message: 02/09/2005, 15h22

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