8795 sujets

Développement web côté serveur, CMS

Bon je poste sur le général parceque ca touche plus au PHP qu'au CSS mais bon.
Voila j'utilise la fonction Include pour le header des pages de mon site. J'ai donc un fichier header.htm avec le code suivant :
<img id="headerdroite" src="gmouille/image/celestin.png" alt="celestin" />
<img id="headergauche" src="gmouille/image/marguerite.png" alt="marguerite" />

Ce fichier est situé à la racine du site (avec la feuille de style et la page accueil), les images sont dans le dossier "image".

Cependant je n'arrive pas a afficher ce header pour les pages situées qouq la racine du site. Avec comme chemin par exemple : http Smiley ohwell /monsite. fr/mon dossier/mapage.php

J'ai essayé dans header.htm de mettre le chemin complet des images mais sans réussite.

Voila vous aurez un petit exemple en ligne sur mon site (voir plus bas)

Normalement le haeder (les 2 photos) devrait apparaitre sur toutes les pages ce qui n'est pas le cas.

SI vous avez une solution pour régler ce problème de chemin. De même faut il indiquer le chemin de la feuille de style dans le fichier include ?

Bien a vous avec mes remerciements.
Modifié par gilles6975 (26 Feb 2005 - 15:15)
Bon, imaginons ta page http /monsite. fr/mon dossier/mapage.php, avec son include header.htm.

Celui-ci indique comme chemin pour les images gmouille/image/... : c'est un chemin relatif. C'est à dire qu'il dit: l'image est dans un répertoire image situé dans le répertoire courant. Le répertoire courant étant mondossier, et non pas la racine du site, il ne peut pas y trouver ce répertoire image...

Ton header.htm doit utiliser, pour éviter ce genre d'erreur, un chemin absolu pour les images, qui dise plutôt: l'image est dans le répartoire image qui est situé à la racine du site. Pour obtenir un chemin absolu, tu dois écrire quelque-chose comme:
/gmouille/image/celestin.png

ou
/image/celestin.png

selon l'organisation des répertoires sur le serveur.

L'important étant le / en début d'url.


gilles6975 a écrit :
De même faut il indiquer le chemin de la feuille de style dans le fichier include ?


Si ton fichier include ne sert pas à générer la section <head></head> de ta page, le lien vers la feuille de style n'a rien à y faire...
Modifié par Laurent Denis (26 Feb 2005 - 09:54)
En fait mon serveur est organisé comme cela.

gmouille/accueil.php et style.css et header.htm (include)
gmouille/X/accueilX.php (page qui recoit l'include header.htm)

Je viens de me rendre compte que c'est le liens de mon include dans les pages de sous-repertoire qui ne marche pas.
J'ai mis dans accueilX.php
<?php include('../header.htm');?>

Car la page "à includer" Smiley biggol se trouve un niveau au dessus de la page qui contient l'include. Mais visiblement en mettant du texte à la place des images cela ne marche pas non plus ; j'en deduis que le problème viens de là.



J'ai essayé aussi de mettre dans l'appel PHP /gmouille/header.htm et même /../header.htm mais visiblement cela ne passe pas.

Pourtant cela doit être logique mais j'avoue secher un peu !
Modifié par gilles6975 (26 Feb 2005 - 10:32)
Est-ce que tu peux voir le contenu de ta feuille de style depuis ton navigateur ? Il faut que ça soit le cas !

@+, HoPHP
Oui pas de problème. Elle se trouve icià côté de lélément à inclure mais visiblement
autant pour le CSS il prend sans problème <a href="../style4.css">
autant pour le php il ne prend pas <?php include('../header.htm');?> ce qui me surprend
alors que ces 2 apels sont dans la même page !
Bon j'ai trouvé une parade mais ca n'est pas bien dans l'esprit. Elle consiste à rajouter l'élément à inclure (header.htm) dans chaque sous dossier. Ce qui n'est quand même pas extraordianire comme manoeuvre.

Je reformule ma question : Comment formater l'appel PHP pour allez chercher un include dans un autre dossier au dessus.
faut il mettre :
<?php include('../header.htm');?>
ou <?php include('/header.htm');?>
ou <?php include('monsite/header.htm');?>
ou <?php include('/monsite/header.htm');?>
ou encore <?php include('http /monsite/header.htm');?>

Cela devrait être simple ! Comment faites vous
Smiley help
Il est possible de définir un "chemin par défaut d'inclusion" en PHP.
[#black][url=http://ch2.php.net/manual/fr/function.set-include-path.php][#navy]set_include_path[/#][/url]([url=http://ch2.php.net/manual/fr/function.get-include-path.php][#navy]get_include_path[/#][/url]() . [b][url=http://ch2.php.net/dir][#purple]PATH_SEPARATOR[/#][/url][/b] . [#blue]'../vers_mon_fichier/'[/#]);[/#]

À voir si ça peut te servir (clique sur les noms de fonctions) !

@+, HoPHP

P.S. Désolé d'être peut-être passé à coté de la plaque....

EDIT: En relisant la question Smiley biggol :

Prenons un point de référence:
/www/

On a le fichier header ici:
/www/a_inclure/header.htm

Et un autre fichier (le contenant) ici:
/www/mon_dossier/index.php

Ce fichier doit contenir la ligne suivante:
[b][#red]<?php[/#][/b][#black] [b]include[/b]([#blue]'../a_inclure/header.htm'[/#]); [/#][b][#red]?>[/#][/b]


EDIT 2 (décidément):

On a le fichier header ici:
/www/dossier/a_inclure/header.htm

Et un autre fichier (le contenant) ici:
/www/dossier/index.php

Ce fichier doit contenir la ligne suivante:
[b][#red]<?php[/#][/b][#black] [b]include[/b]([#blue]'a_inclure/header.htm'[/#]); [/#][b][#red]?>[/#][/b]


Encore à coté de la plaque ? Smiley biggol ?

@+, HoPHP
Modifié par HoPHP (26 Feb 2005 - 11:51)
C'est ce qui me semblait !
Pourtant il me semble faire exactement ce qu'il faut mais rien ne s'affiche.
Est ce que ce genre de restriction sur le serveur pourrait être à l'origine du problème ? En effet, le haeder est appelé plusieurs fois et il ne s'affiche que sur la page d'accueil !
Les restrictions
Afin d'élaborer votre site personnel, vous avez à votre disposition les langages HTML et PHP4.

Pour des raisons de sécurité, les familles de fonctions suivantes de PHP4 ont été interdites :

Affichage d'informations sur le système, 
Exécutions de commandes sur le système, 
Fonctions liées au réseau, 
Fonctions liées aux bases de données, 
Affichage des erreurs.
Les erreurs PHP4 éventuellement présentes dans une page ne sont donc pas affichées par le serveur ; une page blanche est affichée à la place.


Ce que je ne comprends pas c'est que sur ma page d'accueil cela passe mais pas sur les autres pages ! ici
Modifié par gilles6975 (26 Feb 2005 - 15:16)
Bonjour:
J'ai les mêmes difficultés aussi à saisir cette subtilité de chemin avec un include.
En glanant sur le web, j'ai trouvé une explication.....un peu trop technique pour moi, car je suis débutant en PHP.
Actuellement je fais un site en local pour ensuite le mettre en production, aussi j'essaie d'utiliser l'include pour construire ce site.

2 adresses qui peuvent t'aider peut être:
http://www.mandragor.org/article.php?id=4

http://www.phpfacile.com => rubrique : mise en page/frames
à plus ! Smiley cligne