Problème avec include et URL

Résolu/Fermé
max30_3775 Messages postés 178 Date d'inscription jeudi 4 novembre 2021 Statut Membre Dernière intervention 18 mars 2022 - 26 janv. 2022 à 16:36
max30_3775 Messages postés 178 Date d'inscription jeudi 4 novembre 2021 Statut Membre Dernière intervention 18 mars 2022 - 27 janv. 2022 à 09:00
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 lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
26 janv. 2022 à 20:00
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 jeudi 4 novembre 2021 Statut Membre Dernière intervention 18 mars 2022
Modifié le 27 janv. 2022 à 06:05
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 38306 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 novembre 2024 4 705
27 janv. 2022 à 06:58
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 jeudi 4 novembre 2021 Statut Membre Dernière intervention 18 mars 2022
Modifié le 27 janv. 2022 à 07:10
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 38306 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 novembre 2024 4 705
27 janv. 2022 à 07:27
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 jeudi 4 novembre 2021 Statut Membre Dernière intervention 18 mars 2022
27 janv. 2022 à 07:37
ç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 38306 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 novembre 2024 4 705
27 janv. 2022 à 08:38

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 jeudi 4 novembre 2021 Statut Membre Dernière intervention 18 mars 2022
27 janv. 2022 à 09:00
Ok, merci à vous deux pour tout :)
0