Bonjour à tous ????
Je suis nouveau sur le forum et débutant en programmation.????
Alors je code en PHP et j'ai différents fichiers pour contenir l'en-tête, le pied, le menu, etc...(que j'ajoute avec «include» de PHP), mais mon souci est qu'il y a des photos que je mets sur l'entête (le logo, par exemple) et quand je fais include("menu.php") dans une autre page (qui est dans un sous-dossier) les images et tout autre fichiers inclus dans "menu.php" n'apparaissent pas sur la deuxième page. Bien évidemment, parce que «include» a recopié le même code et donc l'emplacement des fichiers n'est relativement plus le même.

Alors je viens vous demander de m'aider à gérer ça SVP.

Merci d'avance ????????????
C’est probablement dû à la façon dont tu codes <img src="...">.
Peux tu mois montrer le code?
Modérateur
Bonjour,

la solution la plus simple est d'utiliser des URLs absolues genre <img src="/images/truc.png">, mais si tu déplaces ton site dans un sous-dossiers ça cassera.

L'autre solution plus lourde consiste à passer une partie de l'url pour revenir au root au fichiers inclus, genre:

$path = '../../';
include "header.php";

// (dans header.php):
<img src="<?php print $path; ?>images/truc.png">


sinon faire un réglage global:

settings.php

<?php
define('BASE_URL', '/');


mapage.php

<?php
include "settings.php";
include "header.php";


header.php

<img src="<?php print BASE_URL; ?>images/truc.png">

Modifié par kustolovic (20 Aug 2020 - 13:19)
Merci à tous pour vos réponses les gars. Je crois que je suis entrain de comprendre à partir de l'explication de kustolovic sur le lien absolu.

Donc pour toutes les images, dans tous les fichiers PHP ou HTML (quelque soit le dossier) insérer le code suivant :
<img src="../images/uneImage.jpg/>

....en supposant que toutes les images sont dans le dossier «images» il n'y aura aucun problème et toutes les images seront affichées ...?
S'il te plaît, Bouchon, pourrais tu approfondir un peu ton idée ?
...et vu que je bosse sur wampServer, comment je passe la valeur de "href" dedans?
Modérateur
MonsterZ a écrit :
Merci à tous pour vos réponses les gars. Je crois que je suis entrain de comprendre à partir de l'explication de kustolovic sur le lien absolu.

Donc pour toutes les images, dans tous les fichiers PHP ou HTML (quelque soit le dossier) insérer le code suivant :
&lt;img src="../images/uneImage.jpg/&gt;

....en supposant que toutes les images sont dans le dossier «images» il n'y aura aucun problème et toutes les images seront affichées ...?


non, les deux points signifie «remonter de 1 dans l'arborescence». Un URL absolu commence par '/' ou par http://…

<img src="/images/uneImage.jpg"/>

ira chercher l'image sur http://localhost/images/uneImage.jpg en local et https://tondomaine.com/images/uneImage.jpg une fois en ligne.

Sinon base fonctionne effectivement aussi:

mettre dans le head:

<base href="http://localhost/">

ajoutera à tous les liens et resources cette url au début

donc cela donnera:

<img src="images/uneImage.jpg"/>
<!-- appelera l'image  http://localhost/images/uneImage.jpg  -->
<a href="dossier/truc.php"></a>
<!-- ira vers le lien  http://localhost/dossier/truc.php  -->

Attention, le lien suivant:
<a href="#truc"></a>
se résoudra en  http://localhost/#truc  et non en ancre sur la page courante
ou 
<form action=""> ne soumettra pas sur la page courante
Bonjour...
Bien compris, kustolovic.
Mais... Si je veux écrire genre une seule ligne et je veux que le même lien marche aussi bien ne local qu'en ligne, je fais comment ?
Tu vois, si j'utilise "base" comme t'a dit j'aurai des soucis avec les ancres mais reste à voir si en ligne ça marcherait bien.
Je suis beaucoup plus intéressé par les liens absolus dont t'as parlé en premier. Mais comment les écrire en une fois pour que ça marche en local et en ligne ????
Modérateur
et bien comme j'ai mis dans mon précédent message:

<img src="/images/uneImage.jpg"/>
kustolovic a écrit :
et bien comme j'ai mis dans mon précédent message:

<img src="/images/uneImage.jpg"/>

Tout à fait d’accord. Cela fait longtemps que j’évite les adresses relatives c’est un nid à bugs qui font perdre beaucoup plus de temps que d’écrire l’adresse absolue.
Merci pour vos réponses les gars. C'est compris pour les insertions d'images et de liens.
Mais comment faire pour passer une adresse absolue avec le include() ?