Régis Posté 14 Février 2005 Posté 14 Février 2005 Je ne suis toujours pas un PRO du PHP, mais grâce à vos conseils et de petits en petits pas, j'avance. Je suis en cours de création d'un site et mes pages sont créées par l'intermédiaire d'includes. Mais j'ai un souci avec le menu. La structure du site est de ce type : - racine (index) ; - racine / répertoire 1 (page11, page12, etc...); - racine / répertoire 2 (page21, page22, etc...); Mon menu est composé de : index - page11 - page12 - page21 - page22 Mais bien sûr en fonction de la localisation de ma page, le chemin de ces liens est différent. J'ai fait 3 menus différents dont j'intègre un des 3 en fonction de la localistion de ma page. Aucun problème à ce niveau là. Mais je me demandais, s'il n'y avait pas une façon plus "élégante", plus "pro" de faire cela. Je pense en particulier à un seul menu dont une variable (?) (peut-être le chemin ../ ?) changerait en fonction de la page. Est-ce possible (euh... facilement pour un débutant) ? et si oui comment ? Peut-être que vu mon niveau PHP actuel, il vaut mieux que je me contente de faire l'include d'un menu spécifique à chacun des répertoires comme je fais actuellement ? J'espère que j'ai été clair...
Sarc Posté 14 Février 2005 Posté 14 Février 2005 Bonjour, même si j'ai compris ton idée, il me faudrait voir tes menus différents pour savoir la meilleure solution à appliquer ! C'est vrai que ta solution est barbare et demande à être simplifiée, mais il faudrait que je voie tes différentes pages avec les différents menus
Régis Posté 14 Février 2005 Auteur Posté 14 Février 2005 Même si j'ai compris ton idée, il me faudrait voir tes menus différents pour savoir la meilleure solution à appliquer ! Merci Sarc ! Voici mes 3 menus (j'ai simplifié par commodité) : Menu 0 (pour la racine) : <a href="index.php">Accueil</a> - <a href="repertoire_1/page11.php">Page11</a> - <a href="repertoire_1/page12.php">Page12</a> - <a href="repertoire_2/page21.php">Page21</a> - <a href="repertoire_2/page22.php">Page22</a> Menu 1 (pour Répertoire 1) : <a href="../index.php">Accueil</a> - <a href="page11.php">Page11</a> - <a href="page12.php">Page12</a> - <a href="../repertoire_2/page21.php">Page21</a> - <a href="../repertoire_2/page22.php">Page22</a> Menu 2 (pour Répertoire 2) : <a href="../index.php">Accueil</a> - <a href="../repertoire_1/page11.php">Page11</a> - <a href="../repertoire_1/page12.php">Page12</a> - <a href="page21.php">Page21</a> - <a href="page22.php">Page22</a> Voilà...
Anonymus Posté 14 Février 2005 Posté 14 Février 2005 Tu peux très bien imaginer une variable du style : $dir_en_cours ="../"; que tu glisses dans tes configurations. Ainsi : <a href="../index.php">Accueil</a> - deviendrait : <a href="<?=$dir_en_cours?>index.php">Accueil</a> - etc..
Dan Posté 14 Février 2005 Posté 14 Février 2005 Salut Régis, Tu peux simplement mettre un menu commun pour les répertoires 1 et 2: Menu 1 (pour Répertoire 1 et 2) : <a href="../index.php">Accueil</a> - <a href="../repertoire_1/page11.php">Page11</a> -<a href="../repertoire_1/page12.php">Page12</a> - <a href="../repertoire_2/page21.php">Page21</a> - <a href="../repertoire_2/page22.php">Page22</a> Ou si ton site se trouve à la racine, tu peux supprimer les .. pour avoir des liens absolus: <a href="/index.php">Accueil</a> - <a href="/repertoire_1/page11.php">Page11</a> -<a href="/repertoire_1/page12.php">Page12</a> - <a href="/repertoire_2/page21.php">Page21</a> - <a href="/repertoire_2/page22.php">Page22</a> ou encore: <a href="/index.php">Accueil</a> - <a href=$DOCUMENT_ROOT."/repertoire_1/page11.php">Page11</a> -<a href=$DOCUMENT_ROOT."/repertoire_1/page12.php">Page12</a> - <a href=$DOCUMENT_ROOT."/repertoire_2/page21.php">Page21</a> - <a href=$DOCUMENT_ROOT."/repertoire_2/page22.php">Page22</a> qui fonctionnerait pour le tout
adn Posté 14 Février 2005 Posté 14 Février 2005 Question, pourquoi ne mets-tu pas tes paths en absolu ? Du style http://www.domaine.com/repertoire_1/page10.php , dans ce cas plus de souçis !
Anonymus Posté 14 Février 2005 Posté 14 Février 2005 Le problème de l'absolu est que le site n'est plus transposable dans un autre répertoire. le principe général, c'est de ne faire qu'un seul fichier config.php, de le mettre à la racine, et de mettre tout ce genre de paramètres de configuration dedans. Quand on fait un site, on a toujours l'impression d'avoir fait les bons choix. A l'usage, on s'apercoit qu'on déplace des répertoires, on en ajoutes, on en supprime, etc.. Si l'on fait quelque chose qui ne soit pas transposable dès le départ facilement, on se retrouve dans le cas où l'on passe énormément de temps à tout remettre en état, et on risque de se retrouver avec des url qui ne pointent sur rien.
Sarc Posté 14 Février 2005 Posté 14 Février 2005 Ce qu'a dit Dan est amha la meilleure solution.... Maintenant, si tu veux un code HTML super allégé et que tu ne veux pas mettre l'url complète pour chaque lien (gagner qques octets, quoi !), je pense que tu peux mettre un code du genre : include('menu.php?dossier=$dossier'); en mettant dans la variable dossier le dossier en cours... Comme ca, dans ton menu.php, tu mets : if ($_GET['dossier']=='repertoire1') {...}elseif ($_GET['dossier']=='repertoire2'){...}... Je ne sais pas si c'est une bonne solution, mais on peut la voir comme cela... Il y a même peut-être moyen d'optimiser ton code php...
Régis Posté 14 Février 2005 Auteur Posté 14 Février 2005 Ouuaaahhhhh.... OK merci à tous. Je teste les différentes solutions, je retrousse mes manches et reviens dans .... quelques heures.
Régis Posté 14 Février 2005 Auteur Posté 14 Février 2005 Tu peux simplement mettre un menu commun pour les répertoires 1 et 2:Menu 1 (pour Répertoire 1 et 2) : <a href="../index.php">Accueil</a> - <a href="../repertoire_1/page11.php">Page11</a> -<a href="../repertoire_1/page12.php">Page12</a> - <a href="../repertoire_2/page21.php">Page21</a> - <a href="../repertoire_2/page22.php">Page22</a> Tu peux très bien imaginer une variable du style :$dir_en_cours ="../"; que tu glisses dans tes configurations. Ainsi : <a href="../index.php">Accueil</a> - deviendrait : <a href="<?=$dir_en_cours?>index.php">Accueil</a> - etc.. 7 cigarettes et 3 Aspro, plus loin me revoilà. J'ai testé les différentes solutions et en fonction de ma "compréhesion", j'ai choisi un mélange entre les 2 solutions ci-dessus. Et incroyable... ca marche Merci à tous...
adn Posté 14 Février 2005 Posté 14 Février 2005 J'en profite pour poser une question, pour ce qui est du chemin absolu, quelle est à votre avis la version la plus efficace : - http://www.domain.com/repertoire/page.php ou - <?echo $_SERVER['DOCUMENT_ROOT']?>/repertoire/page.php ??
Anonymus Posté 14 Février 2005 Posté 14 Février 2005 A mon avis : define("DOMAINE","http://domaine.com"); define("REPERTOIRE","repertoire/"); puis echo "http://".DOMAINE."/".REPERTOIRE.""; C'est la meilleure solution, même si elle parait contraignante. Elle permet de changer de domaine, de répertoire, etc.. sans problèmes.
adn Posté 14 Février 2005 Posté 14 Février 2005 En fait, je n'ai pas précisé, par efficace je parlais en terme de rapidité d'exécution. Dans le cas de http://xxxx... je suppose qu'il y a en plus la résolution du domaine qui est faite et qui coute contrairement à un chemin en absolu défini en local /u/xxx/www/.... ? Qu'en penses-tu ?
Dan Posté 14 Février 2005 Posté 14 Février 2005 Adn, La résolution du domaine est faite dès que tu arrives sur le site. Elle se trouve à ce moment dans le cache DNS de ta machine et il n'y a plus d'interrogation tant que le TTL n'est pas atteint. A part le cas de Google.com (et quelques autres très gros sites) qui a un TTL de 5 minutes pour permettre à son algorithme round-robin de fonctionner, celui-ci est très souvent de 86400, soit 24 heures. Au pire, il est mis à 3600 (secondes) soit une heure. J'opterais, sur un serveur bien configuré, pour l'utilisation systématique du $_SERVER['DOCUMENT_ROOT'], car cela te permet des changements de domaine faciles et sans risque. Dan
MarvinLeRouge Posté 14 Février 2005 Posté 14 Février 2005 A mon avis :define("DOMAINE","http://domaine.com"); define("REPERTOIRE","repertoire/"); puis echo "http://".DOMAINE."/".REPERTOIRE.""; C'est la meilleure solution, même si elle parait contraignante. Elle permet de changer de domaine, de répertoire, etc.. sans problèmes. <{POST_SNAPBACK}> ce qui nous donnerait : http://http://domaine.com/repertoire/ Tu es distrait Anonymus
Anonymus Posté 14 Février 2005 Posté 14 Février 2005 C'était pour voir qui suivait T'auras un bon point, Marvin
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant