Page 1 sur 1

php, include et arborescence[Résolu]

Publié : 20 août 2006, 16:29
par Wronschien
je me mets à peine au php et bien sûr j'ai des pbs

en fait pour l'instant je compte classiquement utiliser la fonction include pour faire le même menu sur toutes les pages

mais... les pages ne sont pas toutes dans le même dossier ni au même niveau dans l'arborescence
donc un lien doit pointer vers ../page.php, ou ../../page.php, voire ../dossier/page.php, etc
donc ce n'est pas exactement le même menu pour chaque page vu que les liens changent

ya t il un moyen de régler ça facilement(si possible) et élégamment(tant qu'à faire!)?
peut-être ya t il une variable qui "contient" la racine du site par exemple?

c'est quand même fastidieux de devoir toucher à toutes les pages quand on change le menu!

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6

Publié : 20 août 2006, 16:59
par Benoit
Tu peux en effet créer toi-même une variable indiquant la racine du site juste avant de faire l'include. Tu modifies alors la page contenant ce menu pour utiliser la même variable.

Exemple (en supposant que ton menu est à la racine) :

Dans un autre fichier à la racine :

Code : Tout sélectionner

$path = './'; // (ou $path = '')
@include $path.'menu.php';
Dans un fichier faisant partie d'un sous-dossier :

Code : Tout sélectionner

$path = '../';
@include $path.'menu.php';
etc.

Et dans menu.php lui-même :

Code : Tout sélectionner

echo '<a href="'.$path.'">Accueil</a>';
echo '<a href="'.$path.'sousdossier/page.html">Autre page</a>';
etc.

Publié : 21 août 2006, 00:18
par Wronschien
intéressant
j'essaierai ça, merci!

PS: au fait pourquoi le @ devant include?

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4

Publié : 21 août 2006, 01:16
par HP
Wronschien a écrit :PS: au fait pourquoi le @ devant include?
Oui, pourquoi ?
ça m'intéresse du coup :D

Publié : 21 août 2006, 07:51
par Benoit
Pour ne pas avoir de message d'erreur quand ça foire parce que tu t'es planté dans le nom du fichier ou que tu as oublié de le mettre sur ton FTP. Du coup tu n'as pas le menu mais le reste de la page s'affiche quand même.

J'avoue que je ne retrouve plus aucune référence à cette syntaxe dans la documentation (à part dans les commentaires), donc c'est peut-être méga déconseillé :)

Publié : 21 août 2006, 11:37
par Asumbaa
Salut,

Pour les includes, il y a tout de même plus simple que de définir le path à chaque page :

Code : Tout sélectionner

$_SERVER['DOCUMENT_ROOT']
contient la racine du site sur le serveur (donc en général quelque chose comme /var/www/html/lesite), ça c'est pour les includes de fichiers PHP

Pour trouver des fichiers simples genre feuille de style etc, la syntaxe /premierdosser/deuxiemedossier/monfichier : le premier / c'est la racine.

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6

Publié : 21 août 2006, 12:48
par Wronschien
parfait!

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4

Publié : 21 août 2006, 17:17
par HP
Benoit a écrit :Pour ne pas avoir de message d'erreur
merci !