OVH Cloud OVH Cloud

include($html_page) : manque les images

10 réponses
Avatar
Mario
Salut,
je cherche à inclure une page html à l'intérieur d'un tableau. Le problème,
c'est que cette page contient des images avec des chemins relatifs. Comment
faire un include() qui aille chercher les images là où elles sont ?

Merci


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.541 / Virus Database: 335 - Release Date: 14/11/2003

10 réponses

Avatar
Jedi121
"Mario" a écrit le 20/11/2003 :
Salut,
je cherche à inclure une page html à l'intérieur d'un tableau. Le problème,
c'est que cette page contient des images avec des chemins relatifs. Comment
faire un include() qui aille chercher les images là où elles sont ?

Merci


On ne peut pas faire de include() d'une page HTML car le texte contenu
dans la page HTML sera "déversé" dans le code PHP.
A mon avis il vaut mieux utiliser une iframe dans la page HTML
"maître".

Avatar
Mario
On ne peut pas faire de include() d'une page HTML car le texte contenu
dans la page HTML sera "déversé" dans le code PHP.


C'est pourtant ce que je fais, et ca marche (mis à part pour les images)

A mon avis il vaut mieux utiliser une iframe dans la page HTML "maître".


quels navigateurs sont capables de gérer les iframes ?


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.541 / Virus Database: 335 - Release Date: 14/11/2003

Avatar
Laurent Seguin
Jedi121 , le 20 nov. 2003 23:37:18, écrivait ceci:

A mon avis il vaut mieux utiliser une iframe dans la page HTML
"maître".


Grmbl encore <iframe>, et <object> ca sert à planter des choux ;-)

--
Crosspost + Suivis sur : <news:fr.comp.infosystemes.www.auteurs>

Avatar
Christian
Salut,
je cherche à inclure une page html à l'intérieur d'un tableau. Le
problème,

c'est que cette page contient des images avec des chemins relatifs.
Comment

faire un include() qui aille chercher les images là où elles sont ?

Merci


salut,

il faut mettre les chemins relatifs en fonction de la page qui
fait l'include et non pas en fonction de celle qui est incluse.

Christian

Avatar
Jedi121
"Mario" a écrit le 21/11/2003 :
On ne peut pas faire de include() d'une page HTML car le texte contenu
dans la page HTML sera "déversé" dans le code PHP.


C'est pourtant ce que je fais, et ca marche (mis à part pour les images)

A mon avis il vaut mieux utiliser une iframe dans la page HTML "maître".


quels navigateurs sont capables de gérer les iframes ?


En effet méa culpa, cela fonctionne (à mon gd étonnement d'ailleurs
mais bon).
En regardant de plus près le source généré je dirai que pour les images
le problème vient du fait que les liens relatifs ne sont pas mis à jour
et sont considérés relatifs à la page PHP et non à la page HTML
d'origine. Donc dès que la page PHP n'est plus dans le répertoire de la
page HTML inclue, ça merde.
C'est valable pour tous les liens y compris les styles, les scripts en
fichier séparé, etc.

De plus comme l'indique Laurent Seguin, il vaut mieux utilisé OBJECT
pour intégrer une autre page HTML.


Avatar
Matthieu Dapvril
Une idée comme une autre.

Tu fais un fopen sur ta page HTML.
Tu met tout le contenu de ta page HTML dans une variable.
Tu utilises une expression régulière pour changer les chemins vers tes
images.
Tu affiches ta variable.
Avatar
Bobe
Jedi121 nous a susurré le 20/11/2003 23:37:

On ne peut pas faire de include() d'une page HTML car le texte contenu
dans la page HTML sera "déversé" dans le code PHP.



Pas du tout, on peut faire un include() d'un fichier html. On peut même faire
un include de ce qu'on veut. Si ce n'est pas du php, ce sera affiché, comme si
on avait lu le fichier et qu'on faisait un "echo" de son contenu.

--
Bobe (Aurélien Maille)
http://webnaute.net

"la vie d'un geek est un combat perpétuel contre l'imperfection"

Avatar
Guillaume Bouchard
Jedi121 wrote:

On ne peut pas faire de include() d'une page HTML car le texte contenu
dans la page HTML sera "déversé" dans le code PHP.


Rien comprit.

A mon avis il vaut mieux utiliser une iframe dans la page HTML "maître".


Oué, utilisé des frames, des applet activeX, du JS qui marche que sous
IE 5.5 release 0.347 beta x+alpha 12 c'est le top.

Plus serieusement. Pour les images, trois techniques.

1) codé en absolue par rapport à la racine ( /....../.../ ).
2) codé en absolue par rapport au site ( http://..../.../ )
3) codé en relatif avec des ../../

Ma technique préferée sera la 1 ou la 2. Le tout est de ne pas faire
cela comme un goret.

Dans ton fichier de configuration, tu fais

<?php
define('IMG_DIR','/toto/img');
?>

et plus loin :

<?php
echo '<img src="'.IMG_DIR.'/lala.png" alt="image" />';
?>

Bonne chance.

--
Guillaume.

Avatar
Thibaut Allender

Plus serieusement. Pour les images, trois techniques.

1) codé en absolue par rapport à la racine ( /....../.../ ).
2) codé en absolue par rapport au site ( http://..../.../ )
3) codé en relatif avec des ../../


4) utiliser un <base
href="url_absolue_de_la_racine_des_images_de_la_page_incluse">

auquel cas, dans le php, s'il y a deja de l'html et des images, utiliser
un chemin absolu avec http:// & co, afin de ne pas etre perturbé par
le base href

a+

--
freelance + web design + php dev + digital photo
+ 32 496 26 75 76 + http://www.capsule.org

Avatar
Mario
Mon problème n'était pas suffisament exposé :
j'utilise un cms (phpnuke), donc pas moyen de réécrire les chemins pour la
page qui fait l'include.
Je veux intégrer des pages dont je ne suis pas l'auteur, donc pas moyen de
réécrire les chemins pour la page incluse.
La solution des expressions rationnelles me plaisait bien mais je suis trop
fainéant.
Au vu des statistiques sur mon site (navigateurs), j'ai utilisé des iframes,
et ca marche très bien.
Merci pour vos réponses


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.543 / Virus Database: 337 - Release Date: 21/11/2003