JeuWeb - Crée ton jeu par navigateur
problème avec Require - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : problème avec Require (/showthread.php?tid=3570)

Pages : 1 2


problème avec Require - Klaad - 22-01-2009

Bonjour à tous !

J'ai actuellement un petit problème que je n'arrive pas à résoudre ...

Voilà a quoi ressemble les fichiers de mon site.


Citation :/Dossier 1
/Dossier 2
/Dossier include/menu_gauche.php
/Dossier forum/index_forum.php
index.php
machin.php
truc.php
etc ...


Le problème c'est que dans le fichier index_forum.php, je dois faire appel au menu_gauche.php qui est au même niveau, mais dans un autre dossier.

Donc un simple
Code PHP :
<?php 
require "include/gauche.php";

N'est pas utile ..
Comment dois-je faire ?


Ca peut paraitre con comme question :p Mais je suis bloqué ^^

Merci beaucoup


RE: problème avec Require - Adrien A. - 22-01-2009

Code PHP :
<?php 
require "../include/gauche.php";

Les répertoires spéciaux '.' et '..' permettent respectivement d'accéder au répertoire courant, et au répertoire parent.

Bonne chance.


RE: problème avec Require - sulu_03 - 22-01-2009

Oui, c'est un truc tout bête mais que je n'ai compris que récemment :

base/rep1/rep2/fichier.php
base/inclure.php

Si tu as l'arborescence si dessus, tu peux ecrire dans fichier.php :
include '../../inclure.php';


PS : Rien à voir mais Adrien, je t'ai envoyé un MP Smile


RE: problème avec Require - keke - 22-01-2009

tu peux même enchainer à volonté :

../../../../..

en plus, si tu es ici :
/rep/index.php
et que tu as un fichier là :
/fonction.php

le lien ../../../../../fonction.php te permet de retrouver tout de même fonction.php ^^ (bon c'est crade).

Mais en gardant un principe tout simple pour ne pas se perdre dans ton arborescence, c'est de placer un fichier flag à la racine, et de remonter d'un niveau jusqu'à atteindre ce fichier. Quand tu l'as, tu es sûr de ta position.

kéké


RE: problème avec Require - Allwise - 22-01-2009

Si tous les fichiers que tu dois inclure dans tes scripts se trouvent dans le répertoire include, tu peux redéfinir dynamiquement la directive php include_path, de sorte que php aille directement chercher tes fichiers là-dedans.

Ainsi, tu écrirais quelque part, au début de tes scripts ( dans un fichier de configuration chargé à chaque fois par exemple ) :
Code PHP :
<?php 
set_include_path
(
get_include_path()
.
PATH_SEPARATOR.realpath('/chemin/vers/include');

Et à partir de n'importe où dans ton arborescence, l'appel à un fichier se trouvant dans ton répertoire include marchera
Code PHP :
<?php 
require('monfichier.php');

Une autre solution serait d'utiliser le chemin absolu plutôt que le chemin relatif :
Code PHP :
<?php 
$cheminAbsolu
= '/home/monsite/www/include/';
require(
$cheminAbsolu.'monfichier.php');



RE: problème avec Require - Anthor - 23-01-2009

(22-01-2009, 11:36 PM)Allwise a écrit : Une autre solution serait d'utiliser le chemin absolu plutôt que le chemin relatif :
Code PHP :
<?php 
$cheminAbsolu
= '/home/monsite/www/include/';
require(
$cheminAbsolu.'monfichier.php');

En surtout plus pratique pour éviter les globals et pour ne pas se tromper ^^

Code PHP :
<?php 
define
( 'APPLICATION_PATH', realpath(dirname(__file__)) );
require(
APPLICATION_PATH . '/monfichier.php');

Ou en inversant ta solution ce qui est encore mieux car les fichiers sont cherchés dans l'ordre des chemins et tu as plus de chances d'inclure des fichiers dans ton répertoire que dans les autres :
Code PHP :
<?php 
define
( 'APPLICATION_PATH', realpath(dirname(__file__)) );
set_include_path( APPLICATION_PATH
. PATH_SEPARATOR . get_include_path() );
require(
'monfichier.php');



RE: problème avec Require - Allwise - 23-01-2009

Ouaip, c'est mieux, mais mon bout de code n'était là que pour l'exemple, pas comme la solution finale Big Grin

Si on donne la solution au problème c'est pas marrant Confusediffle:


RE: problème avec Require - Klaad - 25-01-2009

Merci à tous pour vos réponses, ça m'est très utile Wink


Merci !!!


RE: problème avec Require - Cartman34 - 27-01-2009

De manière générale, soit tu conserves un lien absolu vers la racine, soit pour chaque fichier de chaque répertoire, tu définis une variable concaténer à ton adresse afin qu'elle définisse le chemin à suivre.


RE: problème avec Require - Argorate - 27-01-2009

Personnellement je ne suis pas de cette avis, tu te fais chier pour rien a rester en chemin absolue.
Avec un chemin relatif ça marchera dans tous les cas et pas besoin de créer une variable et de la concaténer a chaque fois: je trouve que c'est une perte de temps, mais ça n'engage que moi. Wink