Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

include et suivi des liens

5 réponses
Avatar
alainL
Bonjour,
Un fichier menu.html utilise des liens vers des images situées dans le
même répertoire
Si j'utilise include ("menu.html") depuis ce répertoire tout va bien
Pour utiliser include depuis un autre rép, je modifie le chemin :
include("../rep/menu.html") ça marche... mais plus pour les images...
Comment faire sans refaire un fichier menu avec ses liens dans chq
répertoire ?
Merci
--
Alain L

Mon village en Haute Soule : http://autourdalos.fr
Carnet de voyages: http://jarailet.club.fr/Randobal

5 réponses

Avatar
Olivier Miakinen
Le 14/07/2009 22:07, alainL a écrit :

Un fichier menu.html utilise des liens vers des images situées dans le
même répertoire
Si j'utilise include ("menu.html") depuis ce répertoire tout va bien
Pour utiliser include depuis un autre rép, je modifie le chemin :
include("../rep/menu.html") ça marche... mais plus pour les images...
Comment faire sans refaire un fichier menu avec ses liens dans chq
répertoire ?



Puisque les deux scripts sont au même niveau de profondeur (je déduis
ça du fait que dans un cas tu utilises "menu.html" et dans l'autre cas
"../rep/menu.html"), il te suffit de référencer les images par
"src='../rep/image.jpg'" au lieu de "src='image.jpg'".

D'autres possibilités sont :
- passer au script appelé le chemin du script appelant, afin qu'il
corrige les liens à la volée ;
- nommer les images avec un chemin absolu ;
- utiliser BASE HREF...

--
Olivier Miakinen
Avatar
Xavier Nayrac
Olivier Miakinen a écrit :
Le 14/07/2009 22:07, alainL a écrit :
Un fichier menu.html utilise des liens vers des images situées dans le
même répertoire
Si j'utilise include ("menu.html") depuis ce répertoire tout va bien
Pour utiliser include depuis un autre rép, je modifie le chemin :
include("../rep/menu.html") ça marche... mais plus pour les images...
Comment faire sans refaire un fichier menu avec ses liens dans chq
répertoire ?



Puisque les deux scripts sont au même niveau de profondeur (je déduis
ça du fait que dans un cas tu utilises "menu.html" et dans l'autre cas
"../rep/menu.html"), il te suffit de référencer les images par
"src='../rep/image.jpg'" au lieu de "src='image.jpg'".

D'autres possibilités sont :
- passer au script appelé le chemin du script appelant, afin qu'il
corrige les liens à la volée ;
- nommer les images avec un chemin absolu ;



Attention, le chemin va changer lors du passage en production.
C'est la solution que je préfère, mais en placant le chemin dans un
fichier de config.

- utiliser BASE HREF...




J'ajouterai :
- peut-être repenser la structure de l'appli, des images et du code dans
le même dossier ça n'est pas très propre.

--
Xavier Nayrac
http://personalbugtracker.free.fr
Avatar
SAM
Le 7/14/09 10:07 PM, alainL a écrit :
Bonjour,
Un fichier menu.html utilise des liens vers des images situées dans le
même répertoire
Si j'utilise include ("menu.html") depuis ce répertoire tout va bien



J'espère que ce 'menu.htm' n'est pas un fichier complet html (avec head
body toussa) et qu'il ne comporte que le div du menu.
Je suppose qu'alors le fichier peut tt aussi bien s'appeler 'menu.txt'
(pour ne pas se mélanger les pinceaux entre pages html et extraits)

Pour utiliser include depuis un autre rép, je modifie le chemin :
include("../rep/menu.html") ça marche... mais plus pour les images...
Comment faire sans refaire un fichier menu avec ses liens dans chq
répertoire ?



Fichier 'menu.txt' rangé dans le dossier 'extraits' à la racine :

<ul id="menu">
<li><a href="<?php echo $rep ?>pict_1.jg">img 1</a></li>
<li><a href="<?php echo $rep ?>pict_2.jg">img 2</a></li>
<li><a href="<?php echo $rep ?>pict_3.jg">img 3</a></li>
</ul>

Fichier 'index.php' (rangé n'importe où) :

<?php
$rep = '/extraits/';
?>
<doctype>
<html>
<head>
<body>
<h1>accueil du site</h1>
<?php
include( $rep.'menu.txt');
?>
<div>
blabla
</div>
</html>


Le plus simple serait que les liens de 'menu.txt' soient déjà en absolus.

<li><a href="/extraits/images/pict_1.jg">img 1</a></li>

et que l'include sache retrouver ce fichier
(en relatif ou absolu n'a alors pas d'importance)

include( '/extraits/menu.txt');
ou :
include( '../../extraits/menu.txt');

--
sm
Avatar
alainL
Olivier Miakinen a écrit :
Le 14/07/2009 22:07, alainL a écrit :
Un fichier menu.html utilise des liens vers des images situées dans le
même répertoire
Si j'utilise include ("menu.html") depuis ce répertoire tout va bien
Pour utiliser include depuis un autre rép, je modifie le chemin :
include("../rep/menu.html") ça marche... mais plus pour les images...
Comment faire sans refaire un fichier menu avec ses liens dans chq
répertoire ?



Puisque les deux scripts sont au même niveau de profondeur (je déduis
ça du fait que dans un cas tu utilises "menu.html" et dans l'autre cas
"../rep/menu.html"), il te suffit de référencer les images par
"src='../rep/image.jpg'" au lieu de "src='image.jpg'".

D'autres possibilités sont :
- passer au script appelé le chemin du script appelant, afin qu'il
corrige les liens à la volée ;
- nommer les images avec un chemin absolu ;
- utiliser BASE HREF...



Merci. En fait le fichier "menu.htm" est à inclure
- dans index.php (à la racine)
- et dans les autres pages.php situées dans un répertoire.
(Ceci pour rassurer un peu Xavier ? Il y a aussi un rép. destiné en
principe aux img.)

La solution qui me semble la plus simple serait celle des url
absolues... mais ça semble compliqué en local. (EasyPHP 1.7/php 4.3))
Et que se passera-t-il au transfert ?

--
Alain L
Avatar
Xavier Nayrac
alainL a écrit :
Merci. En fait le fichier "menu.htm" est à inclure
- dans index.php (à la racine)
- et dans les autres pages.php situées dans un répertoire.
(Ceci pour rassurer un peu Xavier ? Il y a aussi un rép. destiné en
principe aux img.)




;)

La solution qui me semble la plus simple serait celle des url
absolues... mais ça semble compliqué en local. (EasyPHP 1.7/php 4.3))
Et que se passera-t-il au transfert ?




C'est ce que j'essayai d'expliquer. J'ai pas du être très clair, alors ?
Admettons que le dossier contenant les images s'appelle "image", pour
être original. Chez toi l'url menant à une image sera :

http://localhost/nom-du-site/image/img.jpg

Chez ton hébergeur elle sera :

http://www.nom-du-site.com/image/img.jpg

Tu places le chemin (la partie avant "img.jpg") dans un fichier de
configuration. Ça peut être fait dans un fichier ini :

chemin = "http://localhost/nom-du-site/image/"

ou dans un fichier php à l'aide d'un define :

define("CHEMIN", "http://localhost/nom-du-site/image/");

Puis tu récupère cette valeur au début de ton script.
Quand l'url change, dév <-> prod, renommage du dossier, restructuration
du site, etc, tu n'as qu'une ligne à modifier dans le fichier de config.

Tu peut placer pas mal de valeur intéressante dans un tel fichier,
celles qui doivent être partagées par toute l'appli mais qu'on à intérêt
à ne définir qu'une seule fois, comme par exemple les paramètres de
connexion à la db.

J'espère avoir été plus clair.

--
Xavier Nayrac
http://personalbugtracker.free.fr