Un div en fonction d'une page...

Signaler
Messages postés
95
Date d'inscription
lundi 20 octobre 2003
Statut
Membre
Dernière intervention
30 octobre 2013
-
Messages postés
2090
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
18 novembre 2021
-
Salut à tous,

j'aimerai savoir comment inclure un code sur une page en fonction justement d'une page. C'est à dire que sur chaque page j'ai un code "A" et un code "variable". J'aimerai en gros que:
- si je suis sur la page "page1.php" s'affichent les code A et variable1;
- si je suis sur la page "page2.php" s'affichent les code A et variable2;
- si je suis sur la page "page3.php" s'affichent les code A et variable3;
- si je suis sur la page "page4.php" s'affichent les code A et variable4;

D'après mes faibles connaissances de débutant, j'imagine bien qu'il doit y avoir un système d'include avec des "if" et "eslse" ou else if", moi pas trop comprendre...

le pourquoi du comment c'est simplement que j'ai un div dans lequel je souhaite modifier simplement une partie, ce qui m'éviterait de créer plusieur grosses page avec ce gros div, un gain de temps, d'espace, et pratique pour s'y retrouver.

Bref, je vous remercie par anance de vos réponses.

18 réponses

Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Salut,

Tu cherches certainement la fonction "include"...

Exemple :

------- A.php -----------

    Code de A

-------------------------------

------- page1.php -------
<html>
   
      

          <?php include 'A.php'; ?>
      

      

          Contenu variable n°1>/p>
       </dib>
   
</html>
---------------------------------

Et de même avec les page 2 3 4...

OK?
Messages postés
95
Date d'inscription
lundi 20 octobre 2003
Statut
Membre
Dernière intervention
30 octobre 2013

c'est plutôt comme ceci:

   
blablabla

   

       if "page1.php"  --> <? variable1 ?>  (si je suis sur la page1.php, la variable1 s'affiche)
       if "page2.php"  --> <? variable2 ?>
       if "page3.php"  --> <? variable3 ?>
       etc...
   

car ce code n'est qu'un div qui s'affiche. j'ai mieux pour comprendre, un petit exemple sur cette page: http://omhistorique.online.fr/index2.php?page=videos_gifs
- tu dois deviner ici 2 gros "div": un à gauche et un à droite qui lui revient toujours (sauf sur la page d'accueil)
- le "div" dont je parle est celui de droite: il s'affichera sur presque toutes les pages du site, mais j'aimerai que le menu (avec vidéos, icones, logos, etc...) change en fonction des pages, à savoir:
       * si je suis sur la page des vidéos, il s'affichera un menu
       * si je suis sur la page des jeux, il s'affichera un autre menu
       * etc...
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Oki... Alors 1000 solutions, dont :

   
blablabla

   

       <?
       switch ( $page ) {
          default:
          case 'page1' :
             echo ....;
          break;
          case 'page2':
             echo ....
          break;
       }
   

OU


   
blablabla


   


       <? include $page; ?>
   



avec les fichiers page1.php, page2.php, ... contenants le contenu

mort au foot !
Messages postés
2090
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
18 novembre 2021
1
Si tu as 4 pages il faut bien 4 fois le code HTML, pourquoi tu ecris ça comme si tu ne l'avais qu'une fois ?

Page1.php :
<?php include 'fixe.php' ?>

   
blablabla

   

       <?php echo $variable1; ?>
   

Page2.php

<?php include 'fixe.php' ?>



   
blablabla


   


       <?php echo $variable2; ?>

   



Ou alors :

Page.php?n= [numero de la page]
<?php include 'fixe.php' ?>




   
blablabla



   



       <?php
    if ($_GET['n'] ==1){
        echo $variable1;
    }else if ($_GET['n']==2){
       echo $variable2;
    }?>


   




Flachy Joe

Ta vie t'est prêtée, fais en un cadeau.
Messages postés
95
Date d'inscription
lundi 20 octobre 2003
Statut
Membre
Dernière intervention
30 octobre 2013

J'ai l'impression que le code qui se rapproche le plus de ce que je rechercher est le 2è de Flachy Joe:

------------------
Page.php?n= [numero de la page]
<?php include 'fixe.php' ?>


   
blablabla

   

       <?php
    if ($_GET['n'] ==1){
        echo $variable1;
    }else if ($_GET['n']==2){
       echo $variable2;
    }?>
   



-------------------------

Mais je n'ai pas compris comment l'utiliser; ce que je comprend est que je dois numéroter chaque page puis mettre ce code dans ma page de colonne fixe en précisant la variable en fonction du numéro de la page: c'est bien ça?
Et dans ce cas, le code Page.php?n=[numero de la page], c'est celui que je met sur chacune de mes pages (page1, page2, etc.)?
Pour finir, pour une 3è variable, je dois aussi utiliser un "else if" ?

Ai-je bien compris?
Messages postés
2090
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
18 novembre 2021
1
Avec ce code tu n'aurais que 2 fichier php : page.php et fixe.php (ou fixe.htm d'ailleurs)
mais les liens vers les pages seraient "page.php?n=1" pour la page 1, etc
Tu peut utiliser "switch case" à la place de "if elseif"...

Flachy Joe

Ta vie t'est prêtée, fais en un cadeau.
Messages postés
95
Date d'inscription
lundi 20 octobre 2003
Statut
Membre
Dernière intervention
30 octobre 2013

après une recherche rapide, j'ai cru comprendre que le "switch case" ne marche que si on a une seule condition, ce qui n'est pas mon cas.
Parcontre tu m'es mis un doute: toutes mes pages doivent s'appeller 1.php, 2.php, etc ou bien j'insère le code "page.php?n=numéro"  avec un numéro pour chaque page  en gardant des noms du style gogo.php ou baba.htm comme nom de page?

Je vais quand même tester dès que je peux en attendant ta réponse.
Messages postés
95
Date d'inscription
lundi 20 octobre 2003
Statut
Membre
Dernière intervention
30 octobre 2013

bon j'ai créer plusieurs pages d'essai et je me suis rendu compte par moi-même que page.php?n= devais se trouver avec le code que tu m'as donné.
Problème: j'ai essayé ceci:

<?php
    menu1.php?n=1;
    menu2.php?n=2;
    menu3.php?n=3;
 ?>

mais ça ne marche pas: certainement car ce n'est pas ce qu'il faut mettre, mais je cherche et je ne trouve pas...
Messages postés
95
Date d'inscription
lundi 20 octobre 2003
Statut
Membre
Dernière intervention
30 octobre 2013

je pense avoir trouvé en utilisant la bonne vieille methode du array !
Dans mon test ça marche, je vais tester sur les pages de mon site et je repasse ici pour dire si ça marche.
En tout cas merci, je suis sur la bonne voie...
Messages postés
95
Date d'inscription
lundi 20 octobre 2003
Statut
Membre
Dernière intervention
30 octobre 2013

Fausse alerte !
j'avais fais une erreur dans les liens et tappé l'url des menus test...
donc avec array, marche pas.
Messages postés
2090
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
18 novembre 2021
1
Ouhlala !
Bon, je vais essayer d'être plus clair.
Peut être avec un exemple :

Index.php (dans cet exemple, seul et unique fichier du site auquel les internautes auront accès):
<html>

Vous êtes sur le site du bidulomaniaque.
Les liens vers les pages : [index.php?page=1 Index], [index.php?page=blub Une autre page]

<?php
    $page = $_GET['page'];
    switch ($page){
    default :
    case '1' :
      echo 'vous êtes sur l'index du site, voici le contenu de la page :
';
      include 'pageindex.htm';
      break;
   case 'blub' :
    echo 'maintenant, c'est une autre page, ici on inclue aucun fichier, tout est dans le fichier index.php [index.php?page=3&z=1 ';
     break;
    case '3' :
       echo 'page 3
';
        if ($_GET['z'] != '1'){
           echo 'Pour afficher le contenu de cette page vous devez utiliser exclusivement ]ce lien';
        }else{
           echo 'Vous avez cliqué sur le lien exclusif.';
        }
  }
?>

</html>
<!-- Fin du fichier index.php -->

pageindex.htm
Index

Contenu de la page index
<!-- fin du fichier pageindex.htm -->

Donc tu code une seule et unique fois ta colonne fixe dans le fichier php et le contenu des page est inseré à la demande en fonction de la valeur de la variable $page.

Flachy Joe

Ta vie t'est prêtée, fais en un cadeau.
Messages postés
95
Date d'inscription
lundi 20 octobre 2003
Statut
Membre
Dernière intervention
30 octobre 2013

j'ai beaucoup médié sur ce code et j'ai cru m'appercevoir qu'à moins d'insérer les code de chacune de mes page sur l'index (ceci qui est inconcevable, même avec include car index trop lourd du coup...), c'est infaisable.
Problème: je ne souhaite modifier qu'un div de chaque page, qui se trouve au milieu d'une grosse colonne div.

Alors en fonction de ce que tu m'a donné j'ai essayé ce bout de code qui ne marche pas:
<?php
    $page = $_GET['page'];
    switch ($page){
    default : echo '';
    case 'aaa1' :
          include 'http://omhistorique.free.fr/essai/menu1.php';
          break;
   case 'aaa2' :
          include 'http://omhistorique.free.fr/essai/menu2.php';    
          break;
    case 'aaa3' :
          include 'http://omhistorique.free.fr/essai/menu3.php';    
          break;   
  }
?>

Le principe est que les pages aaa1, aaa2 et aaa3 appellent le fichier essai.php dans lequel je souhaite insérer le code ci-dessus. C'est ensuite ce code placé au bon endroit (dans le div où je veux voir le menu) qui insère le menu à l'endroit adéquat.
Mais j'avoue être un peu bloqué car mon site marche déjà avec des pseudo-frames (exemple de la page d'essai: http://omhistorique.online.fr/index2.php?page=aaa1) donc un peu perdu. J'ai l'impression d'être à la fois proche d'une solution mais aussi très loin.
Messages postés
2090
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
18 novembre 2021
1
aaa1.htm :
<html>

<?php
    $page = 'aaa1';
    include 'menu_includer.php'
?>

div aaa

</html>

menu_includer.php :
<?php
    switch ($page){
    default : echo '';
    case 'aaa1' :
          include 'http://omhistorique.free.fr/essai/menu1.php';
          break;
   case 'aaa2' :
          include 'http://omhistorique.free.fr/essai/menu2.php';    
          break;
    case 'aaa3' :
          include 'http://omhistorique.free.fr/essai/menu3.php';    
          break;   
  }
?>

Mais je me demande si tu cherche pas à faire compliqué pour un truc tout bête...

Flachy Joe

Ta vie t'est prêtée, fais en un cadeau.
Messages postés
2090
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
18 novembre 2021
1
Parceque là je vois franchement pas pourquoi tu n'inclu pas directement le fichier du menu.

Flachy Joe

Ta vie t'est prêtée, fais en un cadeau.
Messages postés
95
Date d'inscription
lundi 20 octobre 2003
Statut
Membre
Dernière intervention
30 octobre 2013

C'est vrai que je pourrais inclure tout simplement le menu, mais il faudrait alors que j'insère toute la colonne qui va avec. Et dans cette colonne, seul le menu change,  alors ça me ferait gagner pas mal de place par page si je trouvais le script qui ne me ferait changer "que" le menu, sans avoir à remettre le code de toute la colonne!

Justement le script que tu m'a donné je l'ai essayé: il marche à moitié car lorsque je suis sur la page aaa1, le menu s'affiche correctement mais lorsque je suis sur aaa2, c'est toujours le menu1 qui s'affiche. Ton code a pourtant l'air très correct et ce n'est pas une erreur de ma part non plus (du genre avoir mis le lien vers le menu1 lorsque je suis sur la page aaa2, avant que tu poses la question...)
Le code que tu m'as donné reconnais bien le case 'aaa1' mais c'est comme si le break stoppait totalement la suite du code, ce qui n'est pas normal, je te l'accorde. Et donc comme je disais, même sur la page aaa2 (case 'aaa2'), c'est le menu1 qui s'affiche.

Je me demande s'il n'y a pas un problème avec la variable $page ou bien si je rentre le bon url. L'url de base de aaa1 est http://omhistorique.online.fr/index2.php?page=aaa2.
J'ai essayé en ajoutant &page=aaa1 derrière mais ça marche pas. En effet, la variable des pseudo-frame de mes pages est $pageOK. J'ai donc aussi essayé avec ceci mais rien n'y fait. D'ailleurs pour info, voici comment j'utilise les pseudo-frame via ma page index si ça peut t'aider:$pageOK array(  'aaa1'           > 'essai/aaa1.php',
                              'aaa2'            => 'essai/aaa2.php',
                              'aaa3'            => 'essai/aaa3.php',
         if ( (isset($_GET['page'])) && (isset($pageOK[$_GET['page']])) ) {
            include($pageOK[$_GET['page']]); 
  }     else {
            include('index2/z_index_milieu.php'); 
  }

J'ai trouvé ceci sur le tuto d'un site.
Messages postés
2090
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
18 novembre 2021
1
Mais au fait, qu'est ce que c'est que ces URL dans les includes ??

De la doc PHP :

Si les [file:///home/florian/Documents/documentation/phpdoc/html/ref.filesystem.html#ini.allow-url-fopen Gestionnaires d'URL]
sont activés dans PHP (ce qui est le cas par défaut),
vous pouvez localiser le fichier avec une URL (via HTTP ou
bien avec un gestionnaire adapté : voir [file:///home/florian/Documents/documentation/phpdoc/html/wrappers.html Annexe M]
pour une liste des protocoles), au lieu d'un simple chemin
local. Si le serveur distant interprète le fichier comme du code
PHP, des variables peuvent être transmises au serveur distant
via l'URL et la méthode GET. Ce n'est pas, à strictement
parler, la même chose que d'hériter du contexte de variable.
Le fichier inclus est en fait un script exécuté à distance,
et son résultat est inclus dans le code courant.

Si tes fichiers à inclures sont sur le même serveur, utilise leur chemin local et non une URL.

Je sais pas si ça arrangera quoi que ce soit mais bon...

Flachy Joe

Ta vie t'est prêtée, fais en un cadeau.
Messages postés
95
Date d'inscription
lundi 20 octobre 2003
Statut
Membre
Dernière intervention
30 octobre 2013

J'ai trouvé la solution sur le site du zéro. Je leur ai exposé le problème à plat (sans les conseils que tu m'as donné pour comparer et arranger tout seul au besoin afin de progresser un petit peu.
Le problème ne venait pas du chemin que j'ai donné à mes menus (j'avais essayé), chemin que j'avais mis par simplicité personnelle et que j'aurai arrangé au final comme je vient de le faire maintenant.
En fait tu m'avais en partie donné la réponse: visiblement le problème venait de ma première pseudo-frame:  il fallait ajouter un if avec isset avant le switch/case avec la variable $_GET.

Donc pour ceux que ça interresse  et qui sont dans mon cas, voici la solution:

if(isset ($_GET['page']))

    {

    $page= $_GET['page'];

    switch($page)

        {

         case page1 :

            echo 'MenuA';

            break;

         casepage2 :

            echo 'MenuB';

            break;

        }

    }   

   
// et ainsi de suite...

En tout cas un grand merci pour tout le mal que tu t'es donné pour moi. Tu m'as permis d'appronfondir ma connaissance des if et de découvrir les switch dont j'avais à peine entendu parlé ou vu une fois ou deux.
Grâce à tes conseils je saurai probablement me débrouiller tout seul la prochaine fois sans avoir à crier à l'aide (même si je ne doute pas que je reviendrai bientôt pour autre chose! mdr). Encore merci.
Messages postés
2090
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
18 novembre 2021
1
De rien, c'est toujours un plaisir !

Flachy Joe

Ta vie t'est prêtée, fais en un cadeau.