> Tous les forumsForum des Webmasters

 dossiers , php include et chemn relatif, je nage !Sujet résolu
Statut du sujet : RESOLU Imprimer
 jjal
  Posté le 21/12/2006 @ 21:30  
 Petit astucien


330 Messages
Bonjour,

(J’utilise easy.php 1.8.)

J’ai à peu près que ce que veux, alors pour éviter d’avoir à retoucher plein de pages plus tard.…

J’essaie un « menu.html », un « page de pied_de_page.html » qui sont appelés à chaque fois par toutes mes pages qui ne contiennent plus qu’un div id « corps » et la fonction include.

Si tout est dans le même dossier ça fonctionne.

Mais, il va me falloir des répertoires pour que ce soit propre à l’usage. Je teste :

Si je mets une page archive.php, par exemple, dans un dossier archive, je suis perdu avec les chemins relatifs pour appeler dans les dossiers parent et style css.

Ma page menu demande une page .css dans un dossier style.

<link rel="stylesheet" media="screen" type="text/css" title="Design" href="styles/style.css" …

Plus loin <li><a href="archives/archive.php">Archives 2005</a></li>

ouvre la page archive qui appelle à son tour menu.html

<?php include"../menu.html";?>

et j’ai tout, le menu, le pied, le « corps » mais pas le « design » (ni mes images of course, dans un dossier images)

(Qui normalement devrait être appelé par menu ?) Là est là question !


en code source je me retrouve avec /styles/style.css et donc pas bon par rapport à ma page archive , je devrais avoir ../styles/style.css

Je mets <link rel ../styles/style.css »… dans la page archive… c’est bon, mais si j’affiche le code source généré, j’ai « deux » fois ce lien vers le css. (et plus dans les head !)

Tout repenser ?

Des pistes ? (j’ai parcouru google pourtant !)

Merci

 Afficher le profil de jjal Envoyer un message privé à jjal
 
 
Publicité
 lebendre  Posté le 21/12/2006 à 22:45  
Petit astucien

154 Messages

avant de tout repenser, essaie de mettre un chemin absolu pour le css, et non relatif comme tu l'as fait, c'est à dire dans ton "head" tu mets

>

où /styles/style.css désigne le chemin vers la feuille de style depuis la racine (c'est pour ça qu'il y a "/" devant!)

p.s. sinon, tu peux repenser ton site "à l'envers" en faisant une page "index.php" à la racine, qui contient:

  • en-tête
  • menu
  • include(pagexxxxx)
  • pied de page
c'est à dire au lieu d'inclure à chaque fois le menu et le pied de page, tu inclus la page elle-même dans un fichier index.php!

Modifié par lebendre le 21/12/2006 22:48
Afficher le profil de lebendreEnvoyer un message privé à lebendre
 Revenir en haut de la page
 jjal  Posté le 21/12/2006 à 23:20  
Petit astucien


330 Messages

Merci pour ta réponse.

/styles/style.css ne va pas car dans mon menu html, la feuille de style doit être appelée par rapport à cette page . Non ? Bien sûr, je débute !

Ta seconde solution est possible mais là je ne gagne rien car à chaque fois que le site va s'étoffer (site d'école - 11 classes ) il va falloir que je modifie mon menu dans toutes les pages. C'est pour cela que j'optais pour cette solution ("brutale" site du zero) : modification d'un seul menu ou d'un corps de page.
La solution, me passer des répertoires, mais ça va être galère aussi.
Je ne comprends pas bien pourquoi les pages générées ne prennent pas en compte ce link..... vers les css alors que si j'affiche le code de la page, tout y est, j'ai ma page d'origine avant que j'essaie include.

Bonne soirée.

Afficher le profil de jjal Voir la configuration de jjalEnvoyer un message privé à jjal
 Revenir en haut de la page
 lebendre  Posté le 22/12/2006 à 10:49  
Petit astucien

154 Messages

mais si tu fais /styles/style.css, il ne cherche plus le fichier css de façon relative, c'est à dire depuis le fichier html qui l'appelle, mais de façon absolue, c'est à dire (dans ce cas) depuis la racine, quel que soit l'emplacement du fichier html (ou php ou...).

Ma deuxième solution te permettait aussi de n'avoir qu'un seul menu, dans le fichier index.php par exemple. Je te rexplique la structure de index.php placé à la racine de ton site:

<html>
<head>
<link> (pour ta feuille de style, ...)
<meta>
</head>
<body>
<div id="menu>ici ton menu</div>
<?php include(page.html); ?> <!-- cette ligne te permet d'inclure n'importe quelle page -->
<div id="pied">ici ton pied de page</div>
</body>
</html>

Ainsi, tout ton site aura le même menu et pied de page (et feuille de style, etc.) et faudra juste "dire" à index.php quelle page inclure (avec $_GET par exemple, en faisant attention à la sécurité)

Afficher le profil de lebendreEnvoyer un message privé à lebendre
 Revenir en haut de la page
 koala01  Posté le 22/12/2006 à 11:42  
Astucien

4715 Messages

Salut,

le chemin relatif que tu places dans tes include doit être... relatif à la page qui inclus les fichiers...

Mais cela nécessite de penser correctement à l'arborescence à créer.

Je m'expliques: le plus facile est une arborescence du genre de

racine
|---image
| |---imgage.gif
| |---img2.gif
|
|---dossier1
| |---index.php
| |---page1-1.php
|
|---dossier2
| |---index.php
| |---page2-1.php
|
|---archive
| |-archive1.zip
| |---archive2.zip
|
|---include
| |---tete.php
| |---gauche.php
| |---pied.php

Les pages seront donc affichées graces aux url respectives de
http://toi.hebergeur.com/dossier1/index.php
http://toi.hebergeur.com/dossierpage1-1.php
http://toi.hebergeur.com/dossier2/index.php et
http://toi.hebergeur.com/dossier2/page2-1.php

De cette manière, vu que le chemin relatif entre l'une de tes pages et les images sera toujour du genre de ../image/(...), le chemin relatif pour les page pourra toujours être du genre de ../dossier/(...) (cela ne pose aucun problème de "remonter d'un cran dans l'arborescence" et de retourner dans le dossier qu'on vient de créer [clindoeil]), et le chemin pour accéder aux archives du genre de ../archive/(...)...

Une autre solution, ce sera de se baser sur la variable globale $_SERVER['PHP_SELF'] qui contient l'url absolue de la page vue (ex: http://tonsite.com/dossier/sousdossier/page.php)

Tu peux alors, en combinant les diférentes fonctions de manipulation des chaines, savoir dans quel niveau de l'arborescence tu te trouve, et donc, pouvoir déterminer le nombre de fois que tu "dois remonter d'un cran" pour retourner à la racine.

Afficher le profil de koala01 Voir la configuration de koala01Envoyer un message privé à koala01
  Revenir en haut de la page
 jjal  Posté le 22/12/2006 à 12:45  
Petit astucien


330 Messages

Merci, je vais voir cela.

Afficher le profil de jjal Voir la configuration de jjalEnvoyer un message privé à jjal
 Revenir en haut de la page
 Malcolm  Posté le 22/12/2006 à 16:26  
  Astucien


7404 Messages
tiens, j'avais écrit un article sur les chemins relatifs et absolus, si ça peut intéresser ...
Afficher le profil de Malcolm Voir la configuration de MalcolmEnvoyer un message privé à Malcolm
  Revenir en haut de la page
 jjal  Posté le 22/12/2006 à 22:27  
Petit astucien


330 Messages
Merci à vous tous.

Koala01 ça roule. Je prends ton arborescence.

Y’a pas, n’êtes pas que des astuciens, vous êtes aussi des astucieux.

Bonne soirée.



Modifié par jjal le 22/12/2006 23:17
Afficher le profil de jjal Voir la configuration de jjalEnvoyer un message privé à jjal
 Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte



Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !
 

 > Tous les forumsForum des Webmasters

 
Forum PC Astuces© 1997-2009 WebastucesAller en haut de la page