Discussion:
include et suivi des liens
(trop ancien pour répondre)
alainL
2009-07-14 20:07:35 UTC
Permalink
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
Olivier Miakinen
2009-07-14 20:30:01 UTC
Permalink
Post by alainL
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
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
Xavier Nayrac
2009-07-15 08:05:06 UTC
Permalink
Post by Olivier Miakinen
Post by alainL
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
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'".
- 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.
Post by Olivier Miakinen
- 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
alainL
2009-07-15 15:34:52 UTC
Permalink
Post by Olivier Miakinen
Post by alainL
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
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'".
- 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
Xavier Nayrac
2009-07-15 18:37:14 UTC
Permalink
Post by alainL
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.)
;)
Post by alainL
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 :

Loading Image...

Chez ton hébergeur elle sera :

Loading Image...

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
SAM
2009-07-15 15:34:52 UTC
Permalink
Post by 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
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)
Post by alainL
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
Continuer la lecture sur narkive:
Loading...