Problème de liens pour les pages

Résolu
bonjour,
je suis en train d'essayer de créer un site web,mais j'ai quelques problèmes avec les liens du menu(qui s'applique partout, car c'est un include).
Il y a tous mes fichiers et avec ça il y a des sous-dossiers. Le problème est que, comme le menu est le même partout, les liens ne sont pas bons. Comment je pourrais arranger ça?
Merci pour votre (future) aide...

10 réponses

  1. Salut,

    Si tu fais du PHP :
    Un principe que j'ai mis en place sur mon site, avec plusieurs niveau de dossier
    et le meme haut de page, bas de page et menu quelque soit le dossier.
    Initialement j'avais un fichier menu qui ne contenait que du html. Je l'ai écrit
    en php en utilsant la syntaxe heredoc et j'ai préfixé tout mes liens de menu
    avec une variable RACINE. Chaque lien est ainsi ecrit en relative depuis cette
    racine.
    Chaque script defini la possition de la racine du site avant d'inclure le menu.
    Cette variable sert par ailleurs à retrouver la loclisation du fichier menu.
    Allez un petit exemple : le fichier menu.php qui est dans le dossier LIB à la
    racine du site (menu horizontal):
    <?php
    echo <<<MENU
      <div class="menu_principal">
        <a href="$RACINE/index.php">Accueil</a>
        <a href="$RACINE/TEA/">Truc &amp; Astuces</a>
        <a href="$RACINE/FORUM">Forum</a>
      </div>
    MENU;
    

    Dans le fichier index.php à la racine du site :
    $RACINE="." ;
    // au moment de l'affichage du MENU
    include( $RACINE."/LIB/menu.php" ) ;
    

    Et par exemple dans le dossier TEA/LINUX :
    $RACINE = "../.." ;
    // au moment de l'affichage du MENU
    include( $RACINE."/LIB/menu.php" ) ;
    

    L'avantage de la variable $RACINE, c'est qu'elle peut aussi servir lors
    de l'écriture des url des images ou tout autre ressources nécessitant une
    url relative.

    Tu peux aussi utiliser les liens absolu dans les urls de tes menus, mais
    c'est la galère pour passer du site en test au site publié : il faut modifier le
    fichier menu.php.

    Un lien pour le heredoc :
    http://www.manuelphp.com/php/language.types.string.syntax.heredoc.php
    A+, crabs
    0
    1. merci je vais y jeter un coup d'oeil... ;)
      0
      1. euh je vois ce que tu vx dire mais je n'y arrive pas....:(
        pourtant j'ai fait comme tu as dit, enfin je crois...
        0
        1. je vais encore essayer ce soir...
          0
          1. c peut-être une question idiote..mais comment tu connais:
            $RACINE = "../.." ;

            si tu savais me dire qund il faut mettre "." ../..", etc et à quoi ça revient stp
            par exemple pr un dossier "admin" ou se trouverait la page "administration.php"

            .....
            0
            1. Salut,
              La valeur de racine est déterminée par le position du script par rapport au
              dossier racine de ton site, le nombre de dossier "à remonter" pour arriver
              à la racine.
              www.toto.com/index.php
                     +------- TOTO (dossier)
                                       +----- toto.php
                                       +----- titi.php
                                       +IMAGES (dossier)
                                                  +----- photo.php
              

              Pour le fichier index.php : RACINE='.' => 0 dossier à remonter
              pour toto.php et titi.php : RACINE= '..' => 1 dossier à remonter
              pour photo.php : RACINE="../.." => 2 dossier à remonter
              Donc l'écriture des tes liens (forme relative) dans ton menu.php deviendrait :
              <a href="$RACINE/index.php">Accueil</a>
              <a href="$RACINE/TOTO/toto.php">Toto</a>
              <a href="$RACINE/TOTO/titi.php">Titi</a>
              <a href="$RACINE/TOTO/IMAGES/photo.php">Photo</a>
              

              Et cela quelque soit le dossier où est situé menu, puisque tu fais un
              include.

              A+, crabs
              0
              1. ok merci, je crois avoir comprit..mais j'ai une dernière petite question...
                Quand on fait un include avec une page genre peid de page:
                <div id="pied_de_page">
                <p>Copyright crée X 2006, tous droits réservés</p>
                </div>
                
                </body>
                
                </html>

                comment je dois insérer la $RACINE, car ici, il n'y a pas vraiment de lien...??
                j'ai réussi avec la bannière, mais là dedans, il y avait un lien (celui qui met le css)..
                0
                1. Salut,
                  Imaginons que tu ais mis tes entêtes , tes pieds de page et ton menu dans
                  le dossier COMMUN à la racine de ton site.
                  Tous les scripts définissent $RACINE avant l'inclusion du menu avec la
                  fonction php include.
                  include( $RACINE.'/COMMUN/menu.php' );

                  Même idée pour l'inclusion du pied, tu ajoutes l'intruction suivante là où tu
                  veux que ton pied de page s'affiche :
                  include( $RACINE.'/COMMUN/pied.html' );

                  A+, crabs
                  0
                  1. ah ok maintenant j'aicomprit
                    à la prochaine
                    +
                    ;)
                    0