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   -
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:
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

Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
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 :
<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.
1
max30_3775 Messages postés 178 Date d'inscription   Statut Membre Dernière intervention  
 
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):
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"
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 ?
0
max30_3775 Messages postés 178 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Jordane, je pense que le lien généré dans les balises img est bon.
$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:
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Et donc... Le chemin te semble bon ?
C'est bien écrit parfaitement identiquement (majuscules/minuscules) ?
Ne manquerait il pas un slash au début ?
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
max30_3775 Messages postés 178 Date d'inscription   Statut Membre Dernière intervention  
 
ça a marché :). J'ai ajouté un /:
 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"
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

3- Quid des include si le site a déjà un nom?

Non.. relis la réponse de Pitet ....
1
max30_3775 Messages postés 178 Date d'inscription   Statut Membre Dernière intervention  
 
Ok, merci à vous deux pour tout :)
0