[PHP] changer une iframe sans recharger la pa

Fermé
John - 13 févr. 2007 à 16:17
 Rouchesta - 28 avril 2011 à 22:24
Bonjour à tous,

voilà j'ai un problème urgent et j'aurai besoin d'aide alors je me lance :
voilà, j'ai un site (intranet) dans lequel j'ai un menu et une charte graphique identique sur toutes les pages.
Donc, lorsque je clique sur un sous-menu, je vais cherche une autre page.

Or, je cherche à faire en sorte d'aller rechercher le contenu de la page, sans recharger la page, en fait recharger uniquement une partie de la page. J'utilise pour l'instant des iframes, mais elles sont spécifiques à telle ou telle page.
Ne serait it pas possible d'aller chercher une frame, selon la sélection, sans recharger le reste de la page??

Merci d'avance
A voir également:

14 réponses

benkeeper Messages postés 81 Date d'inscription samedi 4 septembre 2004 Statut Membre Dernière intervention 26 janvier 2008 45
13 févr. 2007 à 16:34
Si j'ai bien saisi le problème ...

J'utiliserai Javascript de la façon suivante :

Une fonction de cette forme :

function ClickMenu(menu) {
var page;
switch(menu) {
case 'home':
page = 'home.html';
break;

case 'pouet':
page = 'pouet.html';
break;

[...]
}

document.getElementById('ID_de_l_iframe').src = page;
}


et au niveau de chaque menu un lien de cette forme :

<a style="cursor:pointer; " onClick="ClickMenu('en_fonction_du_lien');">Mon lien</a>


Un clique sur le menu appelle la fonction ClickMenu en lui passant le paramètre du menu cliqué. En fonction de se paramètre, la fonction ClickMenu change le contenu de l'iframe.

Dites moi si ça vous va :)

Ben

PS : le style="cursor:pointer; " du lien <a> sert à faire en sorte que le curseur de la souris agissent comme pour les liens habituels, ce qui n'est pas le cas lorsque la propriété href est absente comme c'est le cas ici.
8
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
13 févr. 2007 à 17:20
Oula, c'est de l'enfonçage de portes ouvertes, ça !
Ce que tu fais revient (presque) exactement à mettre
<a href="page.htm" target="Nom de l'Iframe">Mon lien</a>

Ou alors j'ai raté quelque chose ?
7
Ta solution est bien plus pratique :-)
0
benkeeper Messages postés 81 Date d'inscription samedi 4 septembre 2004 Statut Membre Dernière intervention 26 janvier 2008 45
14 févr. 2007 à 14:18
La propriété "scrolling" de la balise frame permet d'autoriser ou non les ascenceurs, mais c'est soit avec soit sans. Je ne crois pas qu'on puisse autoriser le vertical et pas l'horizontal ou inversement.

Pour l'apparition de l'ascenceur horizontal, vérifie que la page source n'a pas un tableau ou quelque chose de trop grand. Cette page doit être au maximum aussi grande que la frame (en largeur) sinon le scroll apparaitra.

Il y a une technique, je ne sais pas si elle est très académique, c'est de mettre le contenu de ta page dans un grand tableau avec une seule ligne et une seule colonne, et tu fixes la largeur du tableau.

<table width="750"> (la tu fixe la même largeur que pour la frame ou un peu moins)
<tr>
<td>

Contenu de la page

<td>
</tr>
</table>


Ben :)
1
tout d'abord merci pour vos réponses.
ensuite, Reivax962, en fait j'utilise la syntaxe <IFRAME>...</IFRAME>, mais en gros ce que je voudrais faire c'est un peu ce genre là, en fait, avoir une seule vraie page dans l'url, qui ne change pas (enfin j'en aurais d'autres après selon les droits) et pouvoir accéder aux différentes pages selon l'endroit où tu cliques dans le menu.
Mais, en quoi est ce risqué? j'ai découvert les iframes récemment, donc je sais pas trop grand choses quant aux risques.

benkeeper, le problème, si c'en est un, est que j'utilise Dreamweaver MX 2004, et que j'ai fais mon menu à partir des outils dreamweaver, ce qui fait que pour le lien d'un sous-menu, je me retrouve avec un truc du genre :

mm_menu_0213142427_0.addMenuItem("ss_menu","location='../acces_membres.php'");

donc, ça ne posera pas de problème d'utiliser ce que tu as mis dans ce cas là? Comme ce n'est pas la même syntaxe que pour un bouton, je ne vois pas trop où le mettre? ou peut être faut il rajouter un paramètre?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
13 févr. 2007 à 18:19
Euh non, je n'ai pas dit que c'était dangereux, j'ai dit que la solution précédente enfonçait les portes ouvertes (comprendre : il sort l'artillerie lourde alors qu'il suffit de mettre le "target" dans ton lien...)
0
ah d'accord, excuse moi. en effet, en relisant, je vois pas pourquoi j'ai mal compris ;)
mais c'est ce que je dis plus haut, le target c'est pour un formulaire (ou un bouton?), mais la c'est pas la même syntaxe que j'ai.

mais en fait toi, tu pense à recharger la page, mais que j'aille rechercher page.php juste en changeant l'iframe (en fait je vise toujours la même page, c'est ça?).

ah et bien c'est une solution en effet, je tenterai ça demain (comme j'ai pas ce qu'il me faut à disposition) et j'essaierai de caler un target dans ma syntaxe, a moins que tu ne connaisse déjà la syntaxe précise?
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
14 févr. 2007 à 10:05
C'est on ne peut plus simple.

Dans ton <iframe>, tu mets :
<iframe src="page.php" name="Contenu" id="Contenu"></iframe>

Et dans les liens :
<a href="page2.php" target="Contenu">Mon lien</a>

target n'est pas du tout réservé aux formulaires...
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
14 févr. 2007 à 10:06
Cela ne va pas recharger toute la page : ça va juste charger page2.php dans l'iframe. C'est exactement ce que tu veux, non ?
0
benkeeper Messages postés 81 Date d'inscription samedi 4 septembre 2004 Statut Membre Dernière intervention 26 janvier 2008 45
14 févr. 2007 à 10:37
Ouais c'est vrai que ma méthode est un peu violente :/

J'étais parti dans mon délire et j'ai pas pu m'arrêter :)
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
14 févr. 2007 à 10:44
Disons que ta méthode n'est pas non plus à mettre à la poubelle... En effet, dans les toutes dernières normes établies par le W3C, l'attribut target a été supprimé, car on n'est pas censé forcer l'affichage dans une fenêtre différente... Mais je ne suis pas sûr que les navigateurs arrêtent de l'implémenter un jour !
0
bonjour,
alors j'ai testé et en bidouillant (en forçant un peu la main à dreamweaver) j'ai réussi à le faire ^^
mais la syntaxe est particulière, c'est pas "target". Je posterai tout à l'heure (car je l'ai pas là) la ligne que j'ai posté hier, mais corrigée, au cas où quelqu'un aurait le même problème.

En tout cas, merci à vous.

ps: juste une autre question concernant les frames : j'ai mis le scrolling auto, mais en fait j'aimerais ne mettre qu'un scrolling vertical (car il me met un scrolling horizontal, alors que je réduis la largeur de ma frame), comment faire?? merci.
0
(désolé j'ai pas trouvé l'edit)
Et concernant les normes W3C, c'est pas bien grave si je fais avec les frames? En plus que ce sera uniquement concerné à l'Intranet. Mais le modèle sera réutilisé pour l'Internet, donc quel serait le problème? et comment le régler?
désolé de relancer des questions comme ça... j'essaie de me débrouiller mais je suis loin d'être un as.
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
14 févr. 2007 à 12:59
Pas de soucis, les normes de W3C servent plus de piste à suivre qu'autre chose... Mais il ne doit pas y avoir 10% des sites web qui les suivent exactement... Le principal pour un webmaster, c'est surtout de s'assurer que son site fonctionne sous Internet Explorer 6, 7, sous Firefox 1.5 et 2. Ainsi, 99% des internautes pourront le visualiser.
Après, on peut tester Opéra, Konqueror et autres pour être vraiment sûr que cela va marcher.

La plupart du temps, les problèmes qui peuvent survenir sont dûs au Javascript, très très rarement du HTML en lui-même. Ne t'inquiète pas, les Frame ne posent pas de soucis.
0
D'accord, cela me rassure.
Justement, je teste sous IE et Firefox, pour vérifier la compatibilité.

Merci encore de votre aide.

Sinon, pas d'idée pour le scrolling?
0
Justement, c'est comme ça que je faisais (tableau de 1 ligne et 1 colonne). Mais j'ai un scroll horizontal alors que mon tableau est moins large que mon iframe (d'ailleurs le scroll prend presque toute la largeur).
Sinon, j'ai fais un test en mettant mon tableau 40 pixels moins large que l'iframe, et j'avais bien le scroll vertical uniquement. Mais je crois que le problème revient sur une autre frame, alors que je met les mêmes dimensions...
Enfin bref, je verrai bien. Si vous trouvez, n'hésitez pas.

merci.

ps: la correction de ma ligne :

mm_menu_0213142427_0.addMenuItem("ss_menu","window.open('contenu_frame.htm', 'frame');") 


En fait, dreamweaver me proposait pas frame, donc j'ai pris _parent et je suis retourné dans le code et j'ai simplement remplacer _parent par frame.
0