include
include
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
Un tuto d'exercices : Apprendre Kompozer
-
- Tyrannosaurus Rex
- Messages : 2390
- Inscription : 26 juin 2006, 12:50
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
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
Un tuto d'exercices : Apprendre Kompozer
Re: include
Heu en lisant la documentation :Gagea a écrit :Code : Tout sélectionner
<?php include("../menuInc.html");?>
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
Serait-il possible de préciser:~HP a écrit : Heu en lisant la documentation :
http://fr2.php.net/manual/fr/function.include.php
on ne fait pas d'include de .html !
- 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
qui pose la limitation?La fonction include() inclut et exécute le fichier spécifié en argument.
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
« Un enfant de cinq ans comprendrait cela ! Allez me chercher un enfant de cinq ans ! »
Groucho Marx.
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 menuGagea a écrit :Comme je ne vois pas, pour l'instant, comment m'y prendre, je vais abandonner cette idée de menus différents.
Code : Tout sélectionner
+repertoire1
:
+repertoire2 +repertoirea
: +repertoireb
+-repertoire3+repertoirec
+repertoired+repertoirex
+repertoirey
Dans le répertoire2, je dépose un fichier "chemin.inc.php" contenant le chemin vers "repertoire2", soit
Code : Tout sélectionner
<?php $chemin="../repertoire1"; ?>
Code : Tout sélectionner
<?php $chemin="../../repertoire1"; ?>
Code : Tout sélectionner
<?php $chemin="../../../repertoire1"; ?>
Code : Tout sélectionner
<?php
require ("chemin.inc.php");
require ($chemin."menu.inc.php");
?>
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]
« Un enfant de cinq ans comprendrait cela ! Allez me chercher un enfant de cinq ans ! »
Groucho Marx.
Re: include
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.Ymai a écrit :BonjourSerait-il possible de préciser:~HP a écrit : Heu en lisant la documentation :
http://fr2.php.net/manual/fr/function.include.php
on ne fait pas d'include de .html !
- le passage précis dans la page où la règle est indiquée
- les raisons de cet ostracisme htmlien?
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
Ce n'est pas ce qu'il faudrait faireYmai a écrit :Je suis un peu inquiet: je fais tout le temps des include de code html pur.
ProbablementYmai a écrit :Serait-ce le *et exécute* dequi pose la limitation?La fonction include() inclut et exécute le fichier spécifié en argument.
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
Merci Ymai pour cette solution. Bien que je n'y connaisse absolument rien en php je vais essayer.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) soitCode : Tout sélectionner
<?php $chemin="../repertoire1"; ?>
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
Code : Tout sélectionner
<?php $chemin="../"; ?>
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
Un tuto d'exercices : Apprendre Kompozer
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
Code : Tout sélectionner
<?php $chemin="../"; ?>
Le
Code : Tout sélectionner
<?php
include ("chemin.inc.php");
include $chemin."menu.inc.html"
?>
Mais je persiste à dire que ce n'est pas très élégant, tout cela.
« Un enfant de cinq ans comprendrait cela ! Allez me chercher un enfant de cinq ans ! »
Groucho Marx.
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
Un tuto d'exercices : Apprendre Kompozer
Oui, c'est nettement plus simple. Mais ce n'est pas toujours praticable.Gagea a écrit :Mettre un / précédant l'url de la page php, c'est peut-être plus simple.
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.
« Un enfant de cinq ans comprendrait cela ! Allez me chercher un enfant de cinq ans ! »
Groucho Marx.
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10
Un tuto d'exercices : Apprendre Kompozer
Code : Tout sélectionner
dirname(__FILE__)
Code : Tout sélectionner
require_once(dirname(__FILE__).'/includes/lib.maLib.php');
Code : Tout sélectionner
__DIR__
Code : Tout sélectionner
require_once(__DIR__.'/includes/lib.maLib.php');
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
Code : Tout sélectionner
include "./menuInc.html";
OU
include "menuInc.html";
OU
include "http://localhost/test/menuInc.html";
mais pas include "../menuInc.html";
. = 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
Qui est en ligne ?
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 3 invités