Page 1 sur 1

comment remplacer un frameset par un iframe ?

Posté : 14 avr. 2016, 15:18
par charlotdu13
Bonjour,

A priori, php 5.6 ne supporte plus les frameset.

J'ai un site dont la page est découpée en plusieurs frames.
Quand on clique sur un lien qui dirige vers un pdf,
le pdf se charge sur une frame et on a toujours accès au menu
sur une autre frame.

Je ne vois pas comment diriger un pdf dans un iframe dynamiquement.
Quelqu'un a-t-il une idée ?
Merci d'avance !

Re: comment remplacer un frameset par un iframe ?

Posté : 14 avr. 2016, 15:32
par @rthur
Bonjour,

Les frameset sont du HTML, et non du PHP, par conséquent il n'est pas possible techniquement que PHP 5.6 ne supporte pas les frameset... car PHP dans ce cas ne génère que du code HTML et donc permet forcément de générer les balises HTML que tu veux comme les frame.

Donne nous un exemple de ce qui ne marche pas, regarde le code source HTML généré par PHP dans ton navigateur internet (clic droit, afficher la source / afficher la source de ce cadre...) pour essayer de trouver le problème

Re: comment remplacer un frameset par un iframe ?

Posté : 14 avr. 2016, 16:16
par charlotdu13
Voilà ce qui s'affiche dans la navigateur :
aaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbb

Et voilà le source :
<p>aaaaaaaaaaaaaa</p>
<p>&nbsp;</p>
bbbbbbbbbbbbbbbbbbbbbbbbbbbbb
[b]<frameset cols="100,1200,*" frameborder="1">
<frame name="gauche" target="principal" src="fond.php" noresize>
<frameset framespacing="0" border="0" rows="160,*" frameborder="1">
<frame name="banniere" scrolling="no" noresize target="principal" src="bandeau.php" marginwidth="0" marginheight="0">
<frameset cols="250,40,910" frameborder="1">
<frame name="colonnegauche" src="page.php?page=12" scrolling="auto" target="principal">
<frame name="marge" target="principal" src="fond.php" noresize>
<frame name="principal" src="page.php?page=11" scrolling="auto" target="_self">
</frameset>
<frame name="droit" target="principal" src="fond.php" noresize>[/b]
<noframes>
cccccccccccccccccccccccccccc
</noframes>
[b]</frameset>
[/b]
</html>
Vous remarquez que la ligne cccccccccc du noframes ne s'affiche pas.

Je suis chez 1&1, je ne peux pas définir la version du HTML.
Mais il semble qu'elle varie en fonction de la version du php.
Les frames marchent en php 5.5 et pas en php 5.6
Cela doit venir d'une version HTML 5...
Enfin je pense...
et c'est bloquant.
Je dois rester en php 5.5 mais jusqu'à quand ???

Re: comment remplacer un frameset par un iframe ?

Posté : 14 avr. 2016, 17:54
par Ryle
Bonjour,

Un frameset ne doit rien afficher à l'écran en dehors de la balise noframes.
Il a uniquement pour objectif de découper la fenêtre et en cas d'erreur si le navigateur ne supporte pas ce mode d'affichage (ce qui reste assez rare de nos jours) d'afficher le code html inclus dans le noframes.

Si tu veux inclure une page html ou un pdf ou autre dans une page existante, il te faut utiliser des iframes. Et tu peux éventuellement appeler une page avec un frameset dans une iframe, mais le frameset ne doit rien afficher (sauf en cas d'erreur) :)

En gros il faut virer tes "aaaaaaaaaa" et tes "bbbbbbbbbb" et les "cccccccccc" ne seront visibles que si le navigateur ne sait pas interpréter les frames. Et ça n'a rien à voir avec la version de php. Le problème que tu rencontres est peut être lié au changement d'environnement, pour autant son origine doit venir d'ailleurs que de la version php...

Re: comment remplacer un frameset par un iframe ?

Posté : 14 avr. 2016, 20:12
par charlotdu13
Oui, merci.
J'avais mis les lignes aaaa et bbbb et cccc pour suivre le script.
Cela s'appelle un debbug.

Donc on remarque bien que le script ne passe pas par noframes.
Les balises framset sont bien prises en compte.

Voilà le site en php 5.5 : http://www.snudifo13.org
Vous pouvez voir dans le source les framset.
Dès que je passe ce site en php 5.6, les pages src appelées dans les frames n'apparaissent plus,

ce qui est bien expliqué dans la doc HTML 5.
Ce qu'ils disent c'est que iframe remplace framset,
alors que ces deux fonctions sont non seulement différentes,
mais complètement contraires.
Iframe permet d'incruster une page à l'intérieur d'une autre,
alors que frameset permet d'afficher des pages différentes simultanément.
Et là, je ne vois pas la solution...
Merci de me consacrer du temps.

Re: comment remplacer un frameset par un iframe ?

Posté : 14 avr. 2016, 21:58
par charlotdu13
Désolé,
Le problème venait d'un mauvais codage de page utf-8...
Merci de m'avoir consacré de votre temps.
Bonne soirée !

Re: comment remplacer un frameset par un iframe ?

Posté : 14 avr. 2016, 22:00
par charlotdu13
Mais il est vrai que le problème va un jour se poser
d'après W3C, les frameset sont "deprecated"
On verra bien !