Chemin par rapport à la racine

Eléphant du PHP | 60 Messages

08 avr. 2006, 13:56

Pour faire suite à un premier fil sur le sujet, j'ai modifié tous mes chemins.

Comme par exemple pour un include :
include ("../html/html_ladt.php");
Ou alors en HTML :
<a href='../index.htm'>
<img src='../_derived/home_cmp_cypress010_gbtn.gif' width='95' height='20' border='0' alt='Accueil' align='middle'></a>
Ceci fonctionne en local, mais pas sur mon site (hébergé chez free).
L'include semble fonctionner mais pas les chemins en HTML.

Amicalement

Stéphane

Eléphanteau du PHP | 11 Messages

08 avr. 2006, 14:00

<a href='../index.htm'>
<img src='../_derived/home_cmp_cypress010_gbtn.gif' width='95' height='20' border='0' alt='Accueil' align='middle'></a>
Je ne suis qu'un débutant , mais , pour le chemin faut mettre " et pas ' il me semble non ?

Eléphant du PHP | 60 Messages

08 avr. 2006, 14:08

Exact, mais j'ai fais une extraction, en fait c'est :
echo "
<a href='../index.htm'> 
<img src='../_derived/home_cmp_cypress010_gbtn.gif' width='95' height='20' border='0' alt='Accueil' align='middle'></a>";

Eléphanteau du PHP | 11 Messages

08 avr. 2006, 14:11

argh apparition de php mon dieu :'(
J'aime pas le PHP . Au début tout va bien les variable je comprend c'ets facile et tout sa . Puis dès qui faut mettre un formulaire et s'en servir comme variable :'( rien ne va plus

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

08 avr. 2006, 14:15

Les chemins des includes (utilisés par php) ne sont pas nécessairement les mêmes que ceux des liens ou des images (utilisés par le navigateur)

Si j'ai une page A qui inclut une page B qui inclut une page C, l'inclusion de B se fait par rapport à A et l'inclusion de C par rapport à B.

En revanches, comme c'est A qui va contenir le résultat final (html généré), les liens et les images doivent être inclus par rapport à A, même si ceux ci sont dans B ou dans C

Pour essayer d'illustrer ça, supposons l'arbo suivante :

Code : Tout sélectionner

dossier A : - A.php - imageA.gif / dossier B - B.php - imageB.gif / dossier C - C.php - imageC.gif
A :
<? include "B/B.php"; ?> // il faut descendre dans B pour l'include depuis A
<img src="imageA.gif"> // l'image est dans le meme dossier

B :
<? include "C/C.php"; ?> // il faut descendre dans C pour l'include depuis B
<img src="B/imageB.gif"> // il faut descendre dans B pour trouver son image depuis A

C : 
<img src="B/C/imageC.gif"> // il faut descendre dans B puis dans C pour trouver son image depuis A
Est ce que ca te parait plus clair ?

(pour le coup des guillemets ou apostrophe puor les attributs, il est préférable et plus agréable d'avoir des guillmets ("), mais les apostrophes fonctionnent également (il est aussi parfois possible de ne rien mettre : border=0, mais c'est pas bien ! :))

Eléphant du PHP | 60 Messages

08 avr. 2006, 14:38

je pense savoir d'ou vient ma confusion (sans pour autant savoir la traiter) : chemin réel et chemin relatif.

Je comprends bien ton explication Ryle, ce qui me permet de mieu saisir le code donné par Lorenzo :
define('ROOT_SCRIPT', dirname(__FILE__).'/'); 
include(ROOT_SCRIPT.'toto/toto2/fichier.php'); 
qui permet d'avoir la certitude de ne pas avoir d'erreur de niveau.

J'ai routé tous mes chemins de la façon suivante (PHP ou HTML) :
../repA/repB/mon.php

el lorsque j'inclus dans mon.php un autre fichier se trouvant par exemple à partir de la dans /repD, j'écris :
include ("../repD/monfichierinclus.php)

En fait je pensais que quand j'écrivais ../repquelquechose, le fait de précéder par ../ me faisais démarrer mon chemin à partir de la racine.

Ce ne serait donc pas le cas ?

Stéphane

Eléphant du PHP | 60 Messages

10 avr. 2006, 19:52

Je constate que mon fil reste sans réponse. C'est inévitablement parce que je ne suis pas clair dans ma description, je vais donc faire un effort.

Imaginons l'arborescence de fichier suivante :

Code : Tout sélectionner

la racine de mon site I I MySql.inc.php I I I--->html (répertoire) I I I I---> html_ladt.php I I---> Outil (répertoire) I I I I moteur.php I I I I---> Espace_membre (répertoire) I I I I authentification.php I I---> Images (répertoire) I I Banniere.gif
Bien maintenant un extrait de code de moteur.php
// un include qui semble bien fonctionner
include ("../html/html_ladt.php");

// liste de répertoire a traiter plus loin par la commande opendir()
// ce format ne semble pas fonctionner
$ListRepAScanner="./,Articles/,Pages/,Transcriptions/";
Un extrait du code de html_ladt.php
function fctHtmlLadtMenu()
   {
   echo "   
   ....
   // Une inclusion d'image qui ne fonctionne pas
   <img border='0' src='../images/Banniere.gif' width='700' height='89'></p>
   ....
   }
Pour, et je vous demande de me dire ou je me plante dans ma réflexion :

1 cas les include ();
- Si je veu inclure authentification.php dans moteur.php je peu soit :
utliser le chemin réel : ../Outils/Espace_membre/authentification.php
ou le chemin relatif : /Espace_membre/authentification.php

2 cas : echo de code html
- l'extrait de code ci-dessus du fichier html_ladt.php fonctionne en local avec EasyPhp, mais ne fonctionne plus sur mon site !

3 cas : je ne vous parle même pas de mon opendir, je décroche

Malgré vos nombreuses explications, quelque chose m'échappe.

Merci de votre patience

Amicalement

Stéphane