Changer l'url d'une frame via une autre frame avec un form

Eléphanteau du PHP | 43 Messages

14 sept. 2007, 21:39

bonjour

voila, pendant le développement de mon site un problème est survenu.

la possibilité de changer l'url d'une frame via une autre frame avec un form !

J'ai essayè divers petit bout de code trouvé sur le net, sans succès.

Voici l'hiérarchie des pages

-----------------page1.php-----------------
iframe vers la barre, id bar, src="bar.php"
iframe vers Google, id nav
----------------------------------------------

-----------------bar.php-----------------
Affiche un Form
un input type="text" name="addresse"
Un input type="button"
----------------------------------------------

Le but est que lorsque l'on ecrit un adresse et appui sur le bouton qui ce trouve dans bar.php
sa change le scr de l'iframe nav ce trouvant dans page1.php

j'éspere m'avoir bien fait comprendre :oops:

merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

15 sept. 2007, 01:06

Ajoute un target dans ton formulaire et donne un nom à ton iframe si ce n'est pas déjà fait :

Code : Tout sélectionner

<form ... target="nom_de_la_frame_cible"> .... </form>
Lorsque tu soumettras le formulaire, l'envoi des données se fera dans la frame spécifiée.

Sinon tu peux le faire en javascript en suivant le dom à coup de parent pour remonter et du nom des frames pour redescendre..
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 43 Messages

15 sept. 2007, 14:00

j'ai essayé sa ne marche pas

Regardez http://www.mabarre.com/labarre (identifiant : test)

Quand j'appui sur le bouton d'envoi, la frame nav affiche page1.php

Eléphanteau du PHP | 43 Messages

18 sept. 2007, 23:33

merci ne sais :?:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 sept. 2007, 10:49

Je comprend pas bien le problème ou ce que tu veux obtenir...

Quand je met une url dans le champ texte et que j'envoi le formulaire, les données sont envoyés à la page "bar.php" dans la frame "nav" et il me marque "pirate" ... si tu veux afficher l'url spécifiée en paramètre il te suffit soit de spécifier une autre page dans l'action du formulaire soit de rediriger l'utilisateur en fonction des paramètres récupérés en php : $_GET['nav']
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 43 Messages

19 sept. 2007, 21:32

Je comprend pas bien le problème ou ce que tu veux obtenir...

Quand je met une url dans le champ texte et que j'envoi le formulaire, les données sont envoyés à la page "bar.php" dans la frame "nav" et il me marque "pirate" ... si tu veux afficher l'url spécifiée en paramètre il te suffit soit de spécifier une autre page dans l'action du formulaire soit de rediriger l'utilisateur en fonction des paramètres récupérés en php : $_GET['nav']
Désolé j'ai oublié d'enlevé le script de protection
Peux-tu réessayé :oops:

En fait, a la base(j'adore ces 3 mots :lol:), quand tu tape l'url dans le champ et que tu valide(frame 1)

le site mentionné doit s'affiché dans la GRAAANDEE frame du dessous(frame 2)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

20 sept. 2007, 12:30

ok, capiche...

Lorsque tu soumets le formulaire, si aucune action n'est précisée, c'est la page en cours qui est rappellé. Le target te permet d'afficher la page appellée dans la frame (ce qu'il fait donc correctement :))

A partir de là tu peux spécifier une action dans ton formulaire pour appeller une page "redirection.php" qui récupérera le paramètre contenant la valeur de l'url saisie et fera la redirection via un header("Location:....").

Une autre solution (en javascript cette fois), consiste à modifier l'attribut action du formulaire lorsque celui-ci est soumit (onSubmit=""), pour le remplacer par l'url saisie. Ainsi la page appellée sera l'url saisie qui sera ouverte dans la frame :

Code : Tout sélectionner

document.nom_du_formulaire.action = document.nom_du_formulaire.champ_du_formulaire.value;
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...