Bonjour, je voudrais savoir s'il est possible de faire un lien vers une page qui est une frame, et que si on suit ce lien, on a la page dans son contexte, et non juste la frame...
Version imprimable
Bonjour, je voudrais savoir s'il est possible de faire un lien vers une page qui est une frame, et que si on suit ce lien, on a la page dans son contexte, et non juste la frame...
J'ai peur de mal comprendre.
Si tu nommes ta frame (NAME="toto") et que tu l'appelles dans ton lien
ca doit coller.Code:<A HREF="tapage.html" TARGET="toto">
C'est moi qui me suis mal exprimé : en fait, ce que je voudrais, c'est exprimer une URL qui pointe dessus afin de pouvoir la donner en dehors du site web.
Pas en HTML alors mais en php oui.
Tu encodes ton url sous forme de variable dans ton lien, tu l'interprètes dans ta frame.
Désolé, mais je ne te suis pas du tout. Par exemple ça :, ça veut dire quoi, et en fait, de quelle URL et de quel lien parles-tu ?Citation:
Tu encodes ton url sous forme de variable dans ton lien
Si tu as quelques notions de php :
1 - J'envoie l'url de mon choix dans la frame :
Code:
1
2
3
4 <?php $monurl=urlencode("http://www.gaetanestleplusbeau.org/toto"); ?> <A HREF="tapage.html?monurl=<?php echo $monurl; ?>" TARGET="maframe">lien</A>
2 - tu affiches l'url dans ta frame
Code:
1
2
3
4
5
6
7
8 <?php if(isset($_GET) && isset($_GET["monurl"])) { $monurl= $_GET['monurl']; } else { $monurl="mapagepardéfaut.html"; } $monurl=urldecode($monurl); ?> <FRAME SRC="<?php echo $monurl; ?>" NAME="maframe">
Ca devrait aller vu que mon site est truffé de PHP/MySQL.Citation:
Si tu as quelques notions de php :
Là, ça ne va pas ; ça aurait été avecCitation:
gaetanestleplusbeau.org
et retour au sérieux :Citation:
laurentestleplusbeau.org
ce truc-là :je crois que je le mets dans ma page "menu" (celle que tu as rendu compatible avec FF)Code:
1
2
3
4 <?php $monurl=urlencode("http://www.laurentestleplusbeau.org/toto"); ?> <A HREF="tapage.html?monurl=<?php echo $monurl; ?>" TARGET="maframe">lien</A>
Et de plus,, faut-il que ça pointe sur le fichier sur lequel on veut faire le lien ?Code:http://www.laurentestleplusbeau.org/toto
Par contre, une telle ligne:n'existe pas. Cette ligne n'existe que pour la page par défaut de la frame, que l'on remplace éventuellement par les liens du menu (qui ont justement pour target la frame). Or, c'est justement sur une de ces pages que je voudrais pointer, donc comment faire ?Code:<FRAME SRC="<?php echo $monurl; ?>" NAME="maframe">
La solution ne serait-elle pas de se contenter de mettre dans la page de la frame ce code :Code:
1
2
3
4
5
6
7 <?php if(isset($_GET) && isset($_GET["monurl"])) { $monurl= $_GET['monurl']; } else { $monurl="mapagepardéfaut.html"; } $monurl=urldecode($monurl); ?>
Aloha
Il s'agit du lien, de l'url précise vers la page à afficher.Citation:
faut-il que ça pointe sur le fichier sur lequel on veut faire le lien ?
Mais la structure de ton site / de cette page repose bien à la base sur une frame ?Citation:
n'existe pas. Cette ligne n'existe que pour la page par défaut de la frame,
Sinon donne moi ton code.
Oui, il y a bien des frames, mais voici la page principale (celle par laquelle on accède au site) :
Les noms ne sont pas très parlants..."test_conf.php", c'est la page du menu et "_conf", ça veut dire "confidentiel" (j'ai fait une version "montrable")Code:
1
2
3
4
5
6
7 <html><head>...</head> <frameset marginwidth="0" marginheight="0" frameborder="0" border="0" framespacing="0" rows="250,200,25"> <frame src="../bandeau/test_conf.php" name="barre de titre" border="0" marginwidth="0" marginheight="0" noresize="noresize" scrolling="no"> <frameset cols="50,2000,*" scrolling="no"> <frame><frame name="frmMain" src="../test.php" id="frmMain" marginwidth="0" marginheight="0" noresize="noresize" scrolling="auto"></frameset> <frame src="../pieddepage/index.html" name="pieddepage" border="0" marginwidth="0" marginheight="0" noresize="noresize" scrolling="no"> </frameset>...</html>
Donc, par défaut, le corps de la page contient "test.php" et sinon, le menu permet d'y mettre autre chose :
avec un peu avant :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 ...<ul id="ul_menu"> <li><a href="http://---/conf/test.php" target="frmMain">Home</a></li> <li><a href="http://---/conf/test/conf_conf.php" target="frmMain">Registration</a></li> <li><a href="http://---/conf/hotel/practical.html" target="frmMain">Practical informations</a></li> <li><a href="http://---/conf/aff_participants_conf.php?monurl=<?php echo $monurl; ?>" target="frmMain">List of participants</a></li> <li><a href="http://---/conf/del_conf_conf.php" target="frmMain">Registration suppression</a></li> <li class="new_line"><a href="http://---/conf/contact/contact_conf.php" target="frmMain">Contact us</a></li> <li><a href="http://---/conf/agenda/agenda.html" target="frmMain">Agenda</a></li> <li><a href="http://---/conf/aff_detail_participants_conf.php" target="frmMain">Detailed List participants</a></li> </ul>
Ca te rappelle peut-être quelque chose...Mais la coloration syntaxique est louche...Code:
1
2
3 <?php $monurl=urlencode("---/conf/aff_participants_conf.php"); ?>
Ok.
Donc ca devrait ressembler à ca :
tapage.php :
et tes liens de cette façon :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <?php if(isset($_GET) && isset($_GET["monurl"])) { $monurl= $_GET['monurl']; } else { $monurl="http://www.blabla/test.php"; } $monurl=urldecode($monurl); ?> <html><head>...</head> <frameset marginwidth="0" marginheight="0" frameborder="0" border="0" framespacing="0" rows="250,200,25"> <frame src="../bandeau/test_conf.php" name="barre de titre" border="0" marginwidth="0" marginheight="0" noresize="noresize" scrolling="no"> <frameset cols="50,2000,*" scrolling="no"> <frame><frame name="frmMain" src="<?php echo $monurl; ?>" id="frmMain" marginwidth="0" marginheight="0" noresize="noresize" scrolling="auto"></frameset> <frame src="../pieddepage/index.html" name="pieddepage" border="0" marginwidth="0" marginheight="0" noresize="noresize" scrolling="no"> </frameset>...</html>
Code:<A HREF="tapage.php?monurl=<?php echo $monurl; ?>" TARGET="frmMain">lien</A>
Je n'ai vu le post que ce soir (bizarre, vu que j'ai mis la notif...) ; j'ai donc appliqué ton conseil, mais si je tape l'URL de la page , ça ne me donne que la frame (et normal qu'il n'y est plus de urlencode() ?)
Tu l'as sûrement déjà fait, donc où est le bug ?
Pardon il faut faire :
et non pas tapage.php puisque celle ci est directement liée à frmMain.Code:<A HREF="<?php echo $monurl; ?>" TARGET="frmMain">lien</A>
Laisse naturellement urldecode oui.
Y a un petit souci, car la variable $monurl n'est pas intialisée...
Comme j'aimerais bien que ça marche, j'ai essayé de mettre cette ligne :avant ce lien :Code:
1
2
3 <?php $monurl=urlencode("http://xxx/conf/aff_participants_conf.php"); ?>
, mais du coup le lien devientCode:<A HREF="<?php echo $monurl; ?>" TARGET="frmMain">lien</A>
Donc ce n'est visiblement pas la solution : qu'est-ce qu'il faut faire ?Code:http://xxx/yyy/.../http%3A%2F%2Fxxx%2Fyyy%2Faff_participants_conf.php
Regarde plus haut, urldecode :
Code:
1
2
3
4
5
6
7 <?php if(isset($_GET) && isset($_GET["monurl"])) { $monurl= $_GET['monurl']; } else { $monurl="mapagepardéfaut.html"; } $monurl=urldecode($monurl); ?>
Cette fonction transformera tes caractères "%2F" en caractères "lisibles".
Je te réponds ici, et aussi à ça :L'echo et le target sont bons, mais le problème se situe ici :Citation:
Tu as bien en lien de l'url désirée en lien et le nom de ta frame en target le nom de ta frame ?
tu fais des echo de $tonlien ? qu est ce qui ne marche pas ?
Quand, je rajoute cette ligne, on passe dans le else
et pour comprendre, le get, il est positionné où ?Code:
1
2
3
4
5
6
7 <?php if(isset($_GET) && isset($_GET["monurl"])) { $monurl= $_GET['monurl']; } else { $monurl="http://xxx/test.php"; } $monurl=urldecode($monurl); ?>
Le GET est positionné avant ta frame.
Il lui indiquera donc l'url à afficher.
Moi, le seul moyen que je connaisse pour positionner un GET, c'est le passage d'info par URL : <a href="---URL---?monurl="xxx">lien</a> et du coup, ds l'URL, $_GET['monurl'] vaut xxx.
Bon, comme ça ne marche pas encore, je résume tout ce que j'ai fait :
en fait, je n'ai modifié que la page qui gère le menu, avec :et un peu plus loinCode:
1
2
3
4
5 if(isset($_GET) && isset($_GET["monurl"])) { $monurl= $_GET['monurl']; } else { $monurl="http://xxx/test.php"; } $monurl=urldecode($monurl);
mais à aucun endroit, il n'y a de référence à l'URL de la page (http://xxx/aff_participants_conf.php) et donc, ça ne peut pas marcher...Code:
1
2
3 <li><a href="<?php echo $monurl; ?>" target="frmMain">List of participants</a></li>
Salut,
Voici un exemple que tu pourras adapter à ton cas.
index.php
Contient le jeu de cadres (frameset).
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 <?php // Pages déstinées à être placées dans un cadre $pages=array('gallerie','infos'); // Lecture de l'éventuel paramètre $p=(isset($_GET['p']))?rawurldecode(trim((string)$_GET['p'])):''; // La variable $file contiendra le nom du fichier (sans chemin ni extension). // Si aucun paramètre est spécifié ou qu'il n'est pas trouvé dans le tableau $pages, alors $file contiendra la page par defaut... 'accueil'. $file=(in_array($p,$pages,true))?$p:'accueil'; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Test</title> </head> <frameset rows="64,*,64"> <frame src="entete.html" name="haut" frameborder="0" marginwidth="0" marginheight="0" noresize="noresize" scrolling="no" /> <frameset cols="200,*"> <frame src="menu.html" name="menu" frameborder="0" marginwidth="0" marginheight="0" noresize="noresize" scrolling="auto" /> <frame src="<?php echo $file; ?>.html" name="principal" frameborder="0" marginwidth="0" marginheight="0" noresize="noresize" scrolling="auto" /> </frameset> <frame src="pied.html" name="bas" frameborder="0" marginwidth="0" marginheight="0" noresize="noresize" scrolling="no" /> <noframes> <body> <p>Les jeux de cadres ne sont pas pris en compte</p> </body> </noframes> </frameset> </html>
Cadres
Chaque page déstinée à être placée dans un cadre contient un code Javascript qui, si la page est appelée directement, redirige le navigateur vers le jeu de cadre, recréant ainsi le contexte à l'aide du paramètre (GET) de l'URL.
haut
Cadre du haut couvrant toute la largeur.
entete.htmlmenu
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <title>Entete</title> <script type="text/javascript"><!-- if(parent.frames.length==0)window.top.location.replace('./'); //--> </script> </head> <body> <p>entete.html</p> </body> </html>
Cadre du milieu à gauche
menu.htmlprincipal
Contient les liens vers les pages déstinées à être placées dans le cadre nommé "principal".
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 <!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <title>Test</title> <script type="text/javascript"><!-- if(parent.frames.length==0)window.top.location.replace('./'); //--> </script> </head> <body> <p>Menu</p> <ul> <li><a href="accueil.html" target="principal">Accueil</a></li> <li><a href="gallerie.html" target="principal">Gallerie</a></li> <li><a href="infos.html" target="principal">Informations</a></li> </ul> </body> </html>
Cadre du milieu à droite
Pages pouvant y être chargées :
accueil.html
gallerie.htmlCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <title>Accueil</title> <script type="text/javascript"><!-- if(parent.frames.length==0)window.top.location.replace('./'); //--> </script> </head> <body> <p>accueil.html</p> </body> </html>
infos.htmlCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <title>Gallerie</title> <script type="text/javascript"><!-- if(parent.frames.length==0)window.top.location.replace('./?p=gallerie'); //--> </script> </head> <body> <p>gallerie.html</p> </body> </html>
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <title>Informations</title> <script type="text/javascript"><!-- if(parent.frames.length==0)window.top.location.replace('./?p=infos'); //--> </script> </head> <body> <p>infos.html</p> </body> </html>
pied
Cadre du bas couvrant toute la largeur.
pied.html
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <title>Pied de page</title> <script type="text/javascript"><!-- if(parent.frames.length==0)window.top.location.replace('./'); //--> </script> </head> <body> <p>pied.html</p> </body> </html>