include

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
Gagea
Iguane
Messages : 627
Inscription : 20 juil. 2008, 10:25

include

Message 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
Un tuto pour débuter avec Kompozer : Initiation Internet : Kompozer et CSS
Un tuto d'exercices : Apprendre Kompozer
Fabrice.Tres.Net
Tyrannosaurus Rex
Messages : 2390
Inscription : 26 juin 2006, 12:50

Message 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
Gagea
Iguane
Messages : 627
Inscription : 20 juil. 2008, 10:25

Message 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
Un tuto pour débuter avec Kompozer : Initiation Internet : Kompozer et CSS
Un tuto d'exercices : Apprendre Kompozer
Avatar de l’utilisateur
~HP
Varan
Messages : 1141
Inscription : 29 juin 2008, 13:22

Re: include

Message par ~HP »

Gagea a écrit :

Code : Tout sélectionner

<?php include("../menuInc.html");?>
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
Ymai
Tyrannosaurus Rex
Messages : 4220
Inscription : 12 mars 2005, 11:36

Re: include

Message par Ymai »

Bonjour
~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 !
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
ymai
« Un enfant de cinq ans comprendrait cela ! Allez me chercher un enfant de cinq ans ! »
Groucho Marx.
Ymai
Tyrannosaurus Rex
Messages : 4220
Inscription : 12 mars 2005, 11:36

Message 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

Code : Tout sélectionner

<?php $chemin="../repertoire1"; ?>
Dans les répertoires a, b, c, le fichier contient alors

Code : Tout sélectionner

<?php $chemin="../../repertoire1"; ?>
Dans les répertoire x, y le fichier contient:

Code : Tout sélectionner

<?php $chemin="../../../repertoire1"; ?>
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]
ymai
« Un enfant de cinq ans comprendrait cela ! Allez me chercher un enfant de cinq ans ! »
Groucho Marx.
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Re: include

Message par calimo »

Ymai a écrit :Bonjour
~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 !
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
Avatar de l’utilisateur
~HP
Varan
Messages : 1141
Inscription : 29 juin 2008, 13:22

Re: include

Message 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
Gagea
Iguane
Messages : 627
Inscription : 20 juil. 2008, 10:25

Message 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

Code : Tout sélectionner

<?php $chemin="../repertoire1"; ?>
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

Code : Tout sélectionner

<?php $chemin="../"; ?>
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
Un tuto pour débuter avec Kompozer : Initiation Internet : Kompozer et CSS
Un tuto d'exercices : Apprendre Kompozer
Ymai
Tyrannosaurus Rex
Messages : 4220
Inscription : 12 mars 2005, 11:36

Message 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

Code : Tout sélectionner

<?php $chemin="../"; ?>
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.
ymai
« Un enfant de cinq ans comprendrait cela ! Allez me chercher un enfant de cinq ans ! »
Groucho Marx.
Gagea
Iguane
Messages : 627
Inscription : 20 juil. 2008, 10:25

Message 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
Un tuto pour débuter avec Kompozer : Initiation Internet : Kompozer et CSS
Un tuto d'exercices : Apprendre Kompozer
Ymai
Tyrannosaurus Rex
Messages : 4220
Inscription : 12 mars 2005, 11:36

Message 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.
ymai
« Un enfant de cinq ans comprendrait cela ! Allez me chercher un enfant de cinq ans ! »
Groucho Marx.
Gagea
Iguane
Messages : 627
Inscription : 20 juil. 2008, 10:25

Message 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
Un tuto pour débuter avec Kompozer : Initiation Internet : Kompozer et CSS
Un tuto d'exercices : Apprendre Kompozer
Avatar de l’utilisateur
~HP
Varan
Messages : 1141
Inscription : 29 juin 2008, 13:22

Message par ~HP »

pour info :

Code : Tout sélectionner

dirname(__FILE__)
donne le chemin complet depuis la racine vers le script en cours… même si celui ci est lui même inclus…

Code : Tout sélectionner

require_once(dirname(__FILE__).'/includes/lib.maLib.php');
en PHP 5.3 il y a la "constante magique" :

Code : Tout sélectionner

__DIR__
qui remplit le même rôle.

Code : Tout sélectionner

require_once(__DIR__.'/includes/lib.maLib.php');
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
lpgc
Lézard à collerette
Messages : 259
Inscription : 16 juil. 2006, 01:02

Message 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
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités