Div div div...
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
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.
-
Pour repondre a l'une de mes question precedente concernant l'appel d'une fonction de la page principale depuis une iframe...si ca peut aider quelqu'un au passage
Call function in parent from iframe
parent.functionName() -
alors j'ai papoter sur l'ami Google et j'ai trouve ca:
page = "page1.php";
document.getElementById('div1').src=page;
je vais creuser un peu
Peux tu me montrer ce que tu as tester stp? -
Normalement le dynamisme devrait être conservé. En gros le include peut appeler du php sans soucis par exemple.
Néanmoins je viens de prendre un peu de temps pour tester et certain caractères empêchent le bon fonctionnement :x (notamment ' " et le retour chariot)... La solution est donc limiter à moins de tout protéger et ca promet d'être lourd.
Moi je ne maitrise pas JS mais je pense qu'il y a peut être une commande à la place de .innerHTML qui permet de spécifier un contenu à un bloc. Faut voir avec google. -
excuses moi....mais au risque de passe pour un idiot...je ne comprend pas
a mon niveau de comprehension, ce qui va se passer c'est que lorsque la page principale va etre charger avec ce code :
<td class="lien" onclick="document.getElementById('texte').innerHTML = "<?php include('page2.php');">
le serveur php va l'interpreter ses balises et mettre le contenu de la page page2.php dans la source de la page principale donc si je clique sur le td...le contenue de page2.php sera affiche dans la div
effectivement ca devrait marché pour les bontons simples...mais pour le grid qui lui passe des parametres a php pour faire la bonne requete sql? pour le menu2 qui lui aussi passe des parametres du style page2.php?Id=12....?? est ce que ca sera vraiment dynamique??
J'en profite au passage pour remercie tout ceux qui m'aide... avec une speciale dedicasse pour bloodchecker dont je n'arriverais pas a memoriser le pseudo de ci tot. -
<td class="lien" onclick="document.getElementById('texte').innerHTML = "<?php include('page2.php');">
-
J'avais bien compris ca comme ca
donc l'idee est de remplacer le P1 et P2 par page1.php est page2.php pour lancer le code php, juste?
dans ce genre la?
<table width="500" border="1" cellspacing="0" align="center">
<tr>
<td width="290" rowspan="2" class="lien" onclick="document.getElementById('texte').innerHTML = 'page1.php'; document.getElementById('Menu2').innerHTML = 'menu2.php';">
<p>Menu 1</p>
</td>
<td class="lien" onclick="document.getElementById('texte').innerHTML = 'page2.php';">
<div id="Menu2"> Menu 2 </div>
</td>
</tr>
<tr>
<td width="200" ><div id="texte">Navigez avec le menu de gauche et ou du haut si actif</div></td>
</tr>
</table> -
document.getElementById('texte').innerHTML = 'P1';
Cette ligne affiche dans l'élément d'identifiant id=texte la valeur contenu entre quote. -
alors c'est plutot comment ca...mais je comprends pas bien ce que fait document.getElementById('texte').innerHTML = 'P1';
<table width="500" border="1" cellspacing="0" align="center">
<tr>
<td width="290" rowspan="2" class="lien" onclick="document.getElementById('texte').innerHTML = 'P1';">
<p>Menu 1</p>
</td>
<td class="lien" onclick="document.getElementById('texte').innerHTML = 'P2';">
<p>Menu 2</p></td>
</tr>
<tr>
<td width="200" ><div id="texte">Navigez avec le menu de gauche et ou du haut si actif</div></td>
</tr>
</table> -
J'avais pas vraiment compris ca comme ca.
Regarde ce bout de code je pense il pourrai t'aider :
<table width="500" border="1" cellspacing="0" align="center">
<tr>
<td width="290" class="lien" onclick="document.getElementById('texte').innerHTML = 'P1';">
<p>Menu 1</p>
</td>
<td width="200" rowspan="2"><div id="texte">Navigez avec le menu de gauche</div></td>
</tr>
<tr>
<td class="lien" onclick="document.getElementById('texte').innerHTML = 'P2';">
<p>Menu 2</p></td>
</tr>
</table> -
oki...peut etre
Alors c'est tres simple...apres un login j'arrive la une fenetre principale. Cette pages est separée en deux, la partie de gauche (nommons la P1) sert au actions de l'utilisateur, la partie de droit (nommons la P2) a en presenter le resultat et est elle meme separe en deux partie, une petit pour la navigation dans les infos (nommons la P1a) et une pour le infos a proprement parler (nommons la P1b)
une action sur un bouton dans la partie P1, doit lancer des requetes MySQL pour aller chercher des infos dans les bases puis les afficher dans P2b
une action sur un grid activewidget dans la partie P1, doit lancer des requetes MySQL pour aller chercher des infos dans les bases puis les afficher dans P2a et P2b.
la solution que j'avais trouvé etait les iframe mais si vous me proposez autres choses...je suis peneur mais honetement a moins de rechercher la page a chaque action de l'utilisateur, les inludes je vois pas.
en esperant avoir ete suffisament precis..je vous remercie d'avance -
Même si <iframe> et <frameset> sont deux balises différentes elles ont les même objectifs et sont à éviter.
Je te propose de nous détailler un peu plus concrètement ce que tu veux faire car je pense que les include devrai suffir. -
iframe = frame
En principe les includes PHP devraient suffire.
Tu as aussi AJAX si tu ne veux recharger qu'une partie de la page -
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??
-
Les frames ...
-
c'est quoi l'include html ?
-
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() -
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 -
Beurg ! Les frames !!
Si t'appelles ça une solution !
https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql -
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 -
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
- 2