Page 1 sur 2
include
Publié : 25 avr. 2009, 07:52
par Gagea
Bonjour,
Sur une version d'essai du site de mon asso, je tente d'incorporer include.
J'ai un souci : sur la page index tous les liens fonctionnent mais dès que je suis sur une autre page, rien ne va plus.
http://kompozer.stesteve.free.fr/Arobase_CSS/index.php
La page menuInc.html est visible à l'url
http://kompozer.stesteve.free.fr/Arobas ... nuInc.html. Dans l'arborescence elle se trouve à la racine comme l'index, alors que toutes les autres pages sont dans des dossiers et sous-dossiers. J'ai bien fait attention au chemin
<?php include("../menuInc.html");?>
Si quelqu'un peut m'aider à trouver mon erreur... Merci
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9
Publié : 25 avr. 2009, 11:51
par Fabrice.Tres.Net
Gagea,
Ton problème vient du fait que tu as index, et ensuite des autres fichiers php dans des sous répertoires. Index et ces fichiers ne peuvent utiliser le même menu à inclure puisque le chemin relatif d'accès à un fichier donné depuis un répertoire fils ou depuis le père n'est pas le même !
Par exemple
vieClub/horaires.php
. /horaires.php ou ../vieClub/horaires.php (depuis horaires.php )
Donc il te faut au moins 2 "menus" différents
Publié : 25 avr. 2009, 13:23
par Gagea
Merci Fabrice pour ta réponse,
Je pensais pouvoir utiliser le même menu sur les 37 pages où se trouve ce menu en modifiant simplement le chemin en fonction de l'arborescence.
Comme je ne vois pas, pour l'instant, comment m'y prendre, je vais abandonner cette idée de menus différents.
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9
Re: include
Publié : 25 avr. 2009, 14:33
par ~HP
Heu
en lisant la documentation :
http://fr2.php.net/manual/fr/function.include.php
on ne fait pas d'include de .html !
Message envoyé avec : Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; fr-FR; rv:1.9.1b5pre) Gecko/20090424 Minefield/3.5b5pre
Re: include
Publié : 25 avr. 2009, 15:07
par Ymai
Bonjour
Serait-il possible de préciser:
- le passage précis dans la page où la règle est indiquée
- les raisons de cet ostracisme htmlien?
Je suis un peu inquiet: je fais tout le temps des include de code html pur.
Serait-ce le *et exécute* de
La fonction include() inclut et exécute le fichier spécifié en argument.
qui pose la limitation?
Message envoyé avec : Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.9) Gecko/2009042113 Ubuntu/8.04 (hardy) Firefox/3.0.9
Publié : 25 avr. 2009, 15:21
par Ymai
Gagea a écrit :Comme je ne vois pas, pour l'instant, comment m'y prendre, je vais abandonner cette idée de menus différents.
Un truc que j'utilise, mais qui n'est pas très beau (à mon goût) est d'ajouter, dans chaque répertoire, un autre include contenant le chemin vers la racine où se trouve le code du menu
Code : Tout sélectionner
+repertoire1
:
+repertoire2 +repertoirea
: +repertoireb
+-repertoire3+repertoirec
+repertoired+repertoirex
+repertoirey
Le menu se trouve dans le répertoire "repertoire1"
Dans le répertoire2, je dépose un fichier "chemin.inc.php" contenant le chemin vers "repertoire2", soit
Dans les répertoires a, b, c, le fichier contient alors
Dans les répertoire x, y le fichier contient:
Cela étant fait, dans chaque fichier où doit figurer le menu, deux instructions permettent de retrouver le chemin:
Code : Tout sélectionner
<?php
require ("chemin.inc.php");
require ($chemin."menu.inc.php");
?>
Il y aura sûrement plein de monde qui viendra donner une meilleure solution.
Message envoyé avec : Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.9) Gecko/2009042113 Ubuntu/8.04 (hardy) Firefox/3.0.9
[modo]Je déplace vers "développement web" où il y aura certainement plus de répondant[/modo]
Re: include
Publié : 25 avr. 2009, 16:25
par calimo
Ymai a écrit :Bonjour
Serait-il possible de préciser:
- le passage précis dans la page où la règle est indiquée
- les raisons de cet ostracisme htmlien?
Je pense que HP veut dire qu'on n'inclut pas un fichier .html
complet (avec doctype, élément <html> etc.), mais seulement le bout de code dont on a besoin.
Message envoyé avec : Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.9) Gecko/2009042113 Ubuntu/8.10 (intrepid) Firefox/3.0.9
Re: include
Publié : 25 avr. 2009, 17:45
par ~HP
Ymai a écrit :Je suis un peu inquiet: je fais tout le temps des include de code html pur.
Ce n'est pas ce qu'il faudrait faire
Ymai a écrit :Serait-ce le *et exécute* de
La fonction include() inclut et exécute le fichier spécifié en argument.
qui pose la limitation?
Probablement
Message envoyé avec : Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; fr-FR; rv:1.9.1b5pre) Gecko/20090424 Minefield/3.5b5pre
Publié : 25 avr. 2009, 17:58
par Gagea
Ymai a écrit :Le menu se trouve dans le répertoire "repertoire1"
Dans le répertoire2, je dépose un fichier "chemin.inc.php" contenant le chemin vers
"repertoire2", (je suppose qu'il s'agit de repertoire1) soit
Merci Ymai pour cette solution. Bien que je n'y connaisse absolument rien en php je vais essayer.
Dans mon cas le menu se trouve à la racine du dossier de site et non dans un répertoire. Si j'ai bien compris je dépose dans les répertoires de premier niveau un fichier chemin.inc.php contenant le code
afin d'indiquer le chemin pour remonter à la racine
etc...
Questions de néophyte :
Dans Kompozer peut-on écrire ce code avec l'Editeur et faut-il le placer dans le head ?
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9
Publié : 30 avr. 2009, 16:15
par Ymai
Ouuups... J'ai un peu perdu ce fil de vue...
S'il n'est pas trop tard...
Le code en question ne devrait pas être écrit avec KompoZer mais avec un éditeur de texte externe.
Le fichier correspondant ne contenant que
et absolument rien d'autre.
Le
Code : Tout sélectionner
<?php
include ("chemin.inc.php");
include $chemin."menu.inc.html"
?>
se trouvera très bien dans le <head>, lui.
Mais je persiste à dire que ce n'est pas très élégant, tout cela.
Publié : 01 mai 2009, 09:12
par Gagea
Pour le moment j'en suis toujours au même point quant à l'utilisation de include. Je n'ai pas fait d'autres essais.
J'ai vu sur un tuto d'Alsacreation, récemment mis à jour, qu'il préconisaient l'emploi d'adresses absolues pour indiquer le chemin en partant de la racine du site.
http://www.alsacreations.com/tuto/lire/ ... a-PHP.html
Mettre un / précédant l'url de la page php, c'est peut-être plus simple.
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10
Publié : 01 mai 2009, 09:18
par Ymai
Bonjour
Gagea a écrit :Mettre un / précédant l'url de la page php, c'est peut-être plus simple.
Oui, c'est nettement plus simple. Mais ce n'est pas toujours praticable.
Il faut alors que la racine du site se trouve aussi sur la racine du serveur.
Sur des hébergements mutualisés, ce n'est jamais le cas.
Lorsque, par exemple, le site se trouve obligatoirement dans le répertoire /www/ , la référence "/" pointe en-dessous de la racine.
Publié : 01 mai 2009, 09:53
par Gagea
Merci Ymai pour cette précision. Il faut vraiment penser à tous les cas possibles ! Les problèmes sont insoupçonnables pour des profanes comme moi.
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10
Publié : 01 mai 2009, 12:23
par ~HP
pour info :
donne le chemin complet depuis la racine vers le script en cours
même si celui ci est lui même inclus
en PHP 5.3 il y a la "constante magique" :
qui remplit le même rôle.
PHP 5.3 : __DIR__ : Constante indiquant le répertoire du fichier courant
L'avantage étant que les inclusions se font toujours par rapport à la racine du système de fichier.
Message envoyé avec : Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; fr-FR; rv:1.9.1b5pre) Gecko/20090430 Minefield/3.5b5pre
Publié : 02 mai 2009, 07:28
par lpgc
j'ai fait un petit test chez moi sur tes pages et çà fonctionne très très bien
Code : Tout sélectionner
include "./menuInc.html";
OU
include "menuInc.html";
OU
include "http://localhost/test/menuInc.html";
mais pas include "../menuInc.html";
qui remonte au répertoire parent
. = répertoire courant
.. = répertoire supérieur
Un truc particulier :
un include dans une boucle PHP
for ... include
inclut le code à chaque boucle
ainsi un
for ... include_once n'effectuera l'include qu'une seule fois
et le code ne sera pas incorporé dés la seconde itération de la boucle
un
for ... include
plantera si vous avez dans l'include des function php
il faut alors tester leur existence
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10