Problème avec include et URL
Résolu
max30_3775
Messages postés
178
Date d'inscription
Statut
Membre
Dernière intervention
-
max30_3775 Messages postés 178 Date d'inscription Statut Membre Dernière intervention -
max30_3775 Messages postés 178 Date d'inscription Statut Membre Dernière intervention -
Bonjour, je sollicite votre aide car je n'arrive pas à inclure correctement mes fichiers sans que cela ne se répercute sur les autres pages.
Les fichiers header.php, accueil.php, footer.php, cnx.php, et style.css NE SE TROUVENT dans aucun dossier.
Les dossiers sont: control (cmdaffichage.php, commandes.php. etc..), princiaples (affichages.php, contact.php, register.php etc..), langues, cssfile(connexion.css etc..) etc... .
Le header EST DANS TOUTES LES PAGES principales (affichage.php, contact.php etc...) et dans la page d'accueil.php également.
Dans le header.php qui contient le MENU, j'ai ça:
Pour les liens, j'ai fait de la sorte:
Les includes de la page affichage.php DANS LE DOSSIER principales :
L'url qui s'affiche lorsqu'on clique par exemple sur la page affichage.php est le suivant: http://projetsite/principales/affichage.php?id=101
==>PROBLEME les images ne s'affichent pas. Est-ce à cause du CSS?
Et lorsqu'on clique sur le menu à partir de la page affichage.php, voici l'url: http://projetsite/principales/principales/affichage.php?id=1
=> le dossier principales qui se répète.
Auriez-vous une idée? :)
Les fichiers header.php, accueil.php, footer.php, cnx.php, et style.css NE SE TROUVENT dans aucun dossier.
Les dossiers sont: control (cmdaffichage.php, commandes.php. etc..), princiaples (affichages.php, contact.php, register.php etc..), langues, cssfile(connexion.css etc..) etc... .
Le header EST DANS TOUTES LES PAGES principales (affichage.php, contact.php etc...) et dans la page d'accueil.php également.
Dans le header.php qui contient le MENU, j'ai ça:
include "langues/fb.php"; include "control/commandes.php";
Pour les liens, j'ai fait de la sorte:
<a href="../accueil.php">
Les includes de la page affichage.php DANS LE DOSSIER principales :
include "../cnx.php"; include "../control/cmdaffichage.php"; include "../header.php";
L'url qui s'affiche lorsqu'on clique par exemple sur la page affichage.php est le suivant: http://projetsite/principales/affichage.php?id=101
==>PROBLEME les images ne s'affichent pas. Est-ce à cause du CSS?
<link rel="stylesheet" href="../style.css">
Et lorsqu'on clique sur le menu à partir de la page affichage.php, voici l'url: http://projetsite/principales/principales/affichage.php?id=1
=> le dossier principales qui se répète.
Auriez-vous une idée? :)
Configuration: Windows / Chrome 97.0.4692.99
6 réponses
Bonjour,
A priori, le problème ne vient pas des chemins des include en php mais plutôt des URLs relatives en html.
Coté client (html/css/js), une solution simple pour les pages internes est d'utiliser des URLs absolues en commancant par la racine / de ton site.
Par exemple pour un lien vers la page d'accueil :
Pour relier vers la feuille de style
Pour un lien vers la page affichage :
Tes URLs devraient ainsi être correctes sur toutes les pages.
Attention à ne pas confondre les URLs coté client dans le code html/css/js
(
et les chemins via le système de fichier coté serveur dans le code php
(
Cette solution est valable pour les URLs, il ne semble pas nécessaire de modifier les chemins de tes include php.
A priori, le problème ne vient pas des chemins des include en php mais plutôt des URLs relatives en html.
Coté client (html/css/js), une solution simple pour les pages internes est d'utiliser des URLs absolues en commancant par la racine / de ton site.
Par exemple pour un lien vers la page d'accueil :
<a href="/accueil.php">Accueil</a>
Pour relier vers la feuille de style
<link rel="stylesheet" href="/style.css">
Pour un lien vers la page affichage :
<a href="/principales/affichage.php?id=101">Page 101</a>
Tes URLs devraient ainsi être correctes sur toutes les pages.
Attention à ne pas confondre les URLs coté client dans le code html/css/js
(
href="http://projetsite/accueil.php"ou
href="../accueil.php"en relatif depuis le dossier "principales")
et les chemins via le système de fichier coté serveur dans le code php
(
include "c:/Users/Max/projectsite/header.php";ou
include "../header.php";en relatif depuis le dossier "principales").
Cette solution est valable pour les URLs, il ne semble pas nécessaire de modifier les chemins de tes include php.
Bonjour Pitet et merci pour ta réponse. Tu as bien compris le problème, et en faisant comme tu as dit les URLs sont correctes sur toutes les pages.
Le souci maintenant c'est avec les includes (je ne suis pas sûr ) car les images des annonces ne s'affichent pas dans la page affichage.php, seul l'image par défaut no_image.png s'affiche. Peut -être parce qu'on a fait /no_image.png comme on peut le voir dans le code ci-dessous.
Les images s'affichent correctement dans la page accueil.php (que j'ai renommée index.php).
Voici comment j'ai organisé mes dossiers, avec pictures là où les images sont sauvegardées après soumission du formulaire:

Voici les include dans le header(qui se trouve sur toutes les pages):
Les includes de la page index.php:
Les includes de la page affichage.php:
La page cmdaffichage.php contenant les fonctions:
Dans la page affichage.php, pour afficher les images:
->Et lorsqu'on veut faire un header location, l'url sera de la même sorte que le href?
exemple:
->Dans notre formulaire doit-on faire , $location= ../pictures au lieu de $location= pictures/
-> Quid des include si le site a déjà un nom? Doit-on faire:
Le souci maintenant c'est avec les includes (je ne suis pas sûr ) car les images des annonces ne s'affichent pas dans la page affichage.php, seul l'image par défaut no_image.png s'affiche. Peut -être parce qu'on a fait /no_image.png comme on peut le voir dans le code ci-dessous.
Les images s'affichent correctement dans la page accueil.php (que j'ai renommée index.php).
Voici comment j'ai organisé mes dossiers, avec pictures là où les images sont sauvegardées après soumission du formulaire:

Voici les include dans le header(qui se trouve sur toutes les pages):
include "langues/fb.php"; include "control/commandes.php";
Les includes de la page index.php:
include 'cnx.php'; include "langues/fb.php"; include "control/cmdaffichage.php"; include "header.php";
Les includes de la page affichage.php:
include "../cnx.php"; include "../control/cmdaffichage.php"; include "../header.php";
La page cmdaffichage.php contenant les fonctions:
function affichageAnnonce($id_cat){ global $bdd; $annonces = getAnnonceCategorie($id_cat); $images = getPhotosAnnonces($annonces); $res = []; foreach ($annonces as $R) { $res[$R['id']] = $R; $imgs = !empty($images[$R['id']]) ? $images[$R['id']] : NULL; if(!empty($imgs)){ foreach($imgs as $I){ $res[$R['id']]['images'][] = !empty($I['IMG']) ? $I['IMG'] : null; } }else{ $res[$R['id']]['images'] = null; } } return $res; }
Dans la page affichage.php, pour afficher les images:
$images = !empty($a['images']) ? $a['images'] : ['/no_image.png'];
->Et lorsqu'on veut faire un header location, l'url sera de la même sorte que le href?
exemple:
header("Location: /membre/profil.php?id=".$_SESSION['id']);
->Dans notre formulaire doit-on faire , $location= ../pictures au lieu de $location= pictures/
-> Quid des include si le site a déjà un nom? Doit-on faire:
include "http://nomdusite.com/header.php"
Bonjour
Et..... Comment affiches tu tes images ?
As tu regardé le lien qui est généré dans tes balises img ? Te sembles t'il bon ?
Et..... Comment affiches tu tes images ?
As tu regardé le lien qui est généré dans tes balises img ? Te sembles t'il bon ?
Bonjour Jordane, je pense que le lien généré dans les balises img est bon.
Et dans le code source c'est ça pour la première annonce par exemple:
Et à l'affichage:

$images = !empty($a['images']) ? $a['images'] : ['/no_image.png']; foreach ($images as $img) { echo '<img class ="active" style="width:240px; height:170px;" src="' . $img . '">'; }
Et dans le code source c'est ça pour la première annonce par exemple:
<img class ="active" style="width:240px; height:170px;" src="pictures/IMG_2114.JPG">
Et à l'affichage:

Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ça a marché :). J'ai ajouté un /:
Et pour les questions plus haut:
1-Lorsqu'on veut faire un header location, l'url sera de la même sorte que le href?
exemple:
2-Dans notre formulaire doit-on faire , $location= ../pictures au lieu de $location= pictures/
3- Quid des include si le site a déjà un nom? Doit-on faire:
echo '<img class ="active" style="width:240px; height:170px;" src="/' . $img . '">';
Et pour les questions plus haut:
1-Lorsqu'on veut faire un header location, l'url sera de la même sorte que le href?
exemple:
header("Location: /membre/profil.php?id=".$_SESSION['id']);
2-Dans notre formulaire doit-on faire , $location= ../pictures au lieu de $location= pictures/
3- Quid des include si le site a déjà un nom? Doit-on faire:
include "http://nomdusite.com/header.php"