Div div div...

Bonjour,

J'ai une question surement bateau pour beaucoup d'entre vous

J'ai une main page avec 2 divs, disons Div1 et Div2
J'aimerai que la main page appelle un fichier "fichier1.php" pour la remplir et que la DIV1 appelle un autre fichier "fichier2.php" pour remplir DIV2

je ne sais pas comment m'y prendre...Est ce que DIV1 connait DIV2 pour afficher fichiers2 au bon endroit??

J'ai essayé d'etre le plus clair possible

Merci
Configuration: Windows XP / Firefox 3.5.8

31 réponses

Résumé de la discussion

Plusieurs échanges portent sur la manière d’alimenter deux divs d’une page principale à partir de fichiers PHP distincts, fichier1.php et fichier2.php, afin d’afficher des contenus séparés. Des solutions évoquées incluent l’emploi de PHP include() pour charger le contenu dans chaque div et, alternativement, l’usage d’iframe ou de technique AJAX pour charger dynamiquement les pages. Plusieurs avis indiquent que l’include() côté serveur peut remplir directement les deux divisions via des fichiers distincts, et que l’idée que div1 connaîtrait div2 n’est pas nécessaire. En cas de choix entre iframe et inclusion PHP, la recommandation générale est d’éviter les frames au profit d’inclusions frontales ou dynamiques pour une meilleure maintenance et intégration.

Bobot (l’IA à votre service)
  1. Bonjour,

    <div class=div1>
    <div class=div2>
    include('fichier.php');
    </div>
    </div>

    C'est moche mais ca doit pouvoir fonctionner;

    La position de div2 peut etre fixee dans un fichier css:
    .div2 {
    position: aboslute/relative;
    top: 10px;
    (...)
    }
    1. Contributeur
      Salut,

      regarde du coté de la fonction php include()
      https://phpsources.net/tutoriel-fonction-include.htm

      dans le style:
      <div id="main">
      <div id="premier">
      <?php include("ton_fichier"); ?>
      </div>
      <div id="deuxieme">
      <?php include("ton_fichier"); ?>
      </div>
      </div>
      
      Si je comprends bien ce que tu veux ;)
      
      Bonne journée
      
      
      1. Par défaut tes deux blocs vont se mettre en colonne, l'un au dessus de l'autre, dans l'ordre ou tu les appelle. En effet par défaut leur position est relative au div précédent.

        Pour afficher deux pages dans deux blocs tu peut utiliser <frameset> mais c'est très mauvais pour le référencement.
        1. Merci les gars pour ces premiere idees

          En fait c'est plus un truc du genre:

          Mainpage.php
          <script>
          function loadPage(div, url){
          document.getElementById(div).innerHTML = '<iframe src="' + url + '" width="586" height="500" frameborder="0"></iframe>';
          }
          </script>

          <body>
          <table>
          <tr><td>
          <div id="div1">
          </div>
          </td></tr>
          <tr><td>
          <div id="div2">
          </div>
          </td></tr>
          </table>
          //event on button
          loadPage('div1', 'fichier1.php' );
          </body>

          Fichier1.php
          <script>
          function loadPage(div, url){
          document.getElementById(div).innerHTML = '<iframe src="' + url + '" width="586" height="500" frameborder="0"></iframe>';
          }
          </script>

          <body>

          //event on button
          loadPage('div2', 'fichier2.php' );
          </body>

          Fichier2.php
          // contient une image

          C'est juste un code pour donner une idée de ce que je cherche a faire. Une page qui appelle une page qui appelle une page mais que je puisse determiner en fonction de quel evenement cela s'affiche et surtout ..ou ca s'affiche

          Merci
          1. quel est l'événement en question ? Ne serait-il pas plus simple de jongler avec le css pour voir si on affiche ou non le bloc (avec display:none) ?

            HS:Je ne comprend pas trop à quoi sert ton tableau, pour aligner deux bloc côte à côte n'est-il pas plus simple de déclarer le premier en float:left ?
            1. la table est juste la pour l'exemple....mainpage est bien plus complexe et utilise bien sur des Css

              un des evemenent est un clique dans un grid Activewidget .... il doit appeler fichier1 avec comme parametre ?ID=xx. En fonction de ce parametre Fichier1 fait un peu de php, cree sa page affiche 4 bouton donc un sur unevenement onclick appele Fichier2 avec comme parametre ?K=xx et devrait affiche le resultat dans Div2
              1. As tu essayé de garder une unique page et en fonction du K ou du ID reçu tu choisit si tu affiche ou non tes boutons/fichiers ?
                Sinon en JS tu peux coder du genre onclick="document.getElementById('div1').style.display=' block' et partir d'un affichage none par défaut.
                1. est ce qu'on peut mettre a la place de onclick="document.getElementById('div2').style..... un truc du genre window.element.div2... pour pointer sur la div2??
                  1. euh je vois pas trop ce que tu veux dire la :x
                    après style tu peut indiquer un attribut css en fait
                    1. oups pardon...too fast

                      en fait je me demadais...dans document.getElementById('div1')...je nomme la div par son id ...est ce que je ne pourrais pas faire de meme avec la div2 qui serait appeler dans fichier1 mais au lieu de mettre div2, je mettrerai un truc du genre window.element.div2.... puisque div2 n'est pas connu de div1 mais le browser ou la mainpage elles la connaissent

                      je connais pas encore assez bien JS pour ca
                      1. Je pense que tu ne peux pas faire comme ça non, pour cela que je te conseil de créer sur une seule page et de jouer avec l'affichage ou non des éléments de la page
                        1. Oki...je vais essayé cette solution ...
                          Cependant comment faire un appel de page correct??

                          comment decrit plus haut, j'utilise:
                          function loadPage(div, url){
                          document.getElementById(div).innerHTML = '<iframe src="' + url + '" width="586" height="500" frameborder="0"></iframe>';
                          }
                          mais j'ai un cadre blanc avant l'affichage...c'est tres peu classe

                          vous avez des idées, suggestions ou explications?
                          1. J'ai trouve ma solution

                            pour le carre blanc de Iframe la solution est
                            function loadPage(div, url){
                            document.getElementById(div).innerHTML = '<iframe src="' + url + '" width="586" height="504" allowTransparency="true" frameborder="0" ></iframe>';
                            }

                            et pour l'appel d'un page qui est appellée par une autre page dans une div...la solution a ete .. appeler les deux pages ficher1 et fichier2, avec les bons parametres, en meme temps par mainpage.

                            merci pour votre aide
                            1. Ben si tu as d'autres solutions...moi je suis toujours preneur....

                              Les includes c'est executé et inclut au chargement de la page...et moi j'ai besoin de recharger la page pour executer du php chaque fois
                              1. L'include HTML n'a rien à voir avec celui en PHP.
                                Utilise celui de PHP pour "copier" le code source d'un fichier dans celui qui l'appelle via la fonction include()
                                1. Les frames ...
                                  1. ah ! ok !
                                    Les frames sont une solution dans la mesure où les pages appelées en frame n'ont pas besoin d'être référencées. Mais à éviter tout de même c'est sur !
                                2. Donc..les include PHP ne repondent pas a mon besoin, les frames a eviter, les iframes je suppose idem....c'est quoi la solution pro alors??
                                  1. iframe = frame
                                    En principe les includes PHP devraient suffire.
                                    Tu as aussi AJAX si tu ne veux recharger qu'une partie de la page
                                    • 1
                                    • 2