Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pop-up qui recharge son parent ?

15 réponses
Avatar
Marie ALHOMME
Bonjour,

C'est probablement une question couillon et/ou déjà posée... mais impossible
de trouver ma réponse sur le site ou dans les forums...
Pis moi ma spécialité c'est les css, pas le javascript...

Voilà, dans mon back-office en php, j'ai une page qui affiche la liste des
utilisateurs, avec des liens sur chacun pour les modifier.
Chacun de ces liens ouvre une pop-up avec un formulaire reprenant le détail
de l'utilisateur, jusque là tout va bien (heureusement !)...

Pour l'instant, le formulaire recharge la page d'origine d'appel de la
pop-up (la liste des utilisateurs, donc) *dans* la pop-up et la page "du
dessous" ne change pas...
Donc je ferme ma pop-up à la main et je recharge ma page de liste... pas
très sexy !

Vous l'aurez compris, j'aurai simplement souhaité que le formulaire ferme la
pop-up et recharge la fenetre "mère" qui a lancé la pop-up...

Alors voilà, je m'en remets à votre bonne âme pour m'aider, parce que soit
c'est la fatigue soit la bétise mais je ne vois pas trop comment faire...
j'ai une vague idée qu'il faut que je fouille dans le
window.close('nom_de_ma_pop_up') mais où je le mets ? dans un OnSubmit dans
la balise form de la pop-up ?
Et pour recharger la page "parente", que dois-je mettre ? et où ? dois-je
donner un nom à ma fenetre parente dans le lien qui ouvre la pop-up (genre
window.name="" ou que sais-je) ??

J'ai vu des choses sur ce forum, notamment le message de réponse de ASM du
18/11 intitulé "Re: action dans une autre fenetre ?" mais je sais pas, j'ai
rien compris, lol ! :)


Bref, si vous voulez bien me filer un p'tit coup d'main j'pourrai éviter d'y
passer 3 jours ! :D
Merci d'avance !!


Bonne soirée à tous,
Marie

10 réponses

1 2
Avatar
Michel Claveau - abstraction méta-galactique non triviale en fuite perpétuelle.
Bonsoir !

Fais des recherches, sur le mot "opener" ; ça pourrait être une piste.
Avatar
ASM

J'ai vu des choses sur ce forum, notamment le message de réponse de ASM du
18/11 intitulé "Re: action dans une autre fenetre ?" mais je sais pas, j'ai
rien compris, lol ! :)


Ben ça alors !
Je serions t-y pas clair ni concis ?

dans l'popup faire un truc du genre

<form action="maliste_a_recharger.php" target="opener">

si ça n'marche point, essayer :

<form action="opener.maliste_a_recharger.php">

--
*******************************************************
Stéphane MORIAUX et son vieux Mac
Aide Pages Perso (images & couleurs, formulaire, CHP)
http://perso.wanadoo.fr/stephane.moriaux/internet/
*******************************************************

Avatar
Marie ALHOMME
ASM wrote:

J'ai vu des choses sur ce forum, notamment le message de réponse de
ASM du 18/11 intitulé "Re: action dans une autre fenetre ?" mais je
sais pas, j'ai rien compris, lol ! :)


Ben ça alors !
Je serions t-y pas clair ni concis ?


Bonjour !

Alors, déjà, merci de ton aide !
Je te rassure je suis sûre que tu es très clair, mais c'est moi qui le suis
moins ;)


dans l'popup faire un truc du genre

<form action="maliste_a_recharger.php" target="opener">

si ça n'marche point, essayer :

<form action="opener.maliste_a_recharger.php">


Ensuite, j'ai testé les deux méthodes et
- dans la première ça m'ouvre une nouvelle fenetre
- dans la deuxieme ça ne marche pas du tout

J'ai testé sous FF1.0PR et IE6, sous windows 2000...


J'espère que tu pourras m'aider un peu plus !


Bonne journée !
Marie


Avatar
Thibaut Allender
Ensuite, j'ai testé les deux méthodes et
- dans la première ça m'ouvre une nouvelle fenetre
- dans la deuxieme ça ne marche pas du tout


normalement il faut utiliser window.opener en javascript pour faire
reference à la fenêtre qui a ouvert le popup
dans un formulaire, c'est moins évident

je ne sais pas s'il existe un "target" faisant référence à window.opener

--
thibaut allender | freelance | http://capsule.org

Avatar
Démosthene

Ensuite, j'ai testé les deux méthodes et
- dans la première ça m'ouvre une nouvelle fenetre
- dans la deuxieme ça ne marche pas du tout



normalement il faut utiliser window.opener en javascript pour faire
reference à la fenêtre qui a ouvert le popup
dans un formulaire, c'est moins évident


je ne sais pas s'il existe un "target" faisant référence à window.opener
Je ne pense pas que celà soit possible dans la mesure ou le target est

un attribut d'une balise HTML





dans ton formulaire, tu ajoutes un événement onclick sur ton bouton (ou
image) de validation qui appelle window.opener.rechargerpagemère()

Cette fonction rechargerpagemère() doit se trouver sur la page mère.

Tu peux prendre en compte l'événement onUnload dans ta balise body pour
appeller la même fonction avec un paramètre qui indique que l'opération
est annulée.

Bon courage :)


Avatar
Marie ALHOMME
Re-,

Démosthene wrote:
dans ton formulaire, tu ajoutes un événement onclick sur ton bouton
(ou image) de validation qui appelle window.opener.rechargerpagemère()

Cette fonction rechargerpagemère() doit se trouver sur la page mère.


ouiiiii... alors j'étais pas bien sûr de la fonction en question, j'ai fait
quelque chose comme çà, qui se trouve sur les deux pages (ouvrante et
ouverte)
<script>
function f_origine(lien)
{
opener.document.location='utilisateurs.php';
}
</script>
et je pense que ça marche en partie car ça me recharge ma page... par contre
du coup mon enregistrement en bdd se fait pas, et ça je sais pas pourquoi,
et donc ça recharge la page mais sans faire de modif réellement...
Je sais pas si c'est très clair ?? (surement pas beaucoup vu qu'en plus j'ai
pas monté tout le php et je ne suis pas encore une pro...)
Le bouton submit dans ma pop-up est présenté comme suit :
<input type="submit" name="submit" value="Enregistrer" size="30">
j'ai essayé le onclick dedans, mais je l'ai peut-etre mal rédigé...
Toujours est-il qu'avec ça enregistre pas et sans ça enregistre...

Ais-je précisé que j'étais une bille en javascript ?? :)


Tu peux prendre en compte l'événement onUnload dans ta balise body
pour appeller la même fonction avec un paramètre qui indique que
l'opération est annulée.


Oui alors là j'ai pas compris grand-chose... :)


Bon courage :)


Hmmm, je sens qu'il va m'en falloir... bon, un p'tit alka et on repart ! :)


merci encore !

marie

Avatar
Thibaut Allender

opener.document.location='utilisateurs.php';

et je pense que ça marche en partie car ça me recharge ma page... par contre
du coup mon enregistrement en bdd se fait pas, et ça je sais pas pourquoi,
et donc ça recharge la page mais sans faire de modif réellement...


normal vu que tu ne fais que recharger la page et pas lui soumettre les
données du formulaire
il faudrait reconstituer une url en GET à l'aide des données, du genre :

opener.document.location='utilisateurs.php?param1='+document.form.champ1.value+'&param2='+document.form.champ2.value;
etc...

--
thibaut allender | freelance | http://capsule.org

Avatar
YD
Je ne réponds pas dans l'enfilade, puisque j'apporte un autre point de vue.


Vous l'aurez compris, j'aurai simplement souhaité que le formulaire ferme la
pop-up et recharge la fenetre "mère" qui a lancé la pop-up...


Bien entendu, il faut utiliser l'attribut target de la balise <form> dans la
popup. Pour cela il faut que la fenêtre "mère" ait un nom !

Donc dans un script de la fenêtre mère :
window.name="theOpener"; //ou n'importe quel nom à réutiliser dans le popup...

dans le popup
<form id="..." action="..." method="..." target="theOpener"
onsubmit="return true, setTimeout('self.close()',50);">

L'attribut onsubmit va valider le formulaire (return true)
puis fermer le popup peu après (la temporisation me semble nécessaire
pour que la fenêtre ne soit pas fermée avant que les données du
formulaire aient été transmises - le 50 à modifier si trop court...)

Si entre-temps la fenêtre mère a été fermée une autre s'ouvrira.

--
Y.D.

Avatar
Démosthene

opener.document.location='utilisateurs.php';



et je pense que ça marche en partie car ça me recharge ma page... par
contre
du coup mon enregistrement en bdd se fait pas, et ça je sais pas
pourquoi,
et donc ça recharge la page mais sans faire de modif réellement...



normal vu que tu ne fais que recharger la page et pas lui soumettre les
données du formulaire
il faudrait reconstituer une url en GET à l'aide des données, du genre :

opener.document.location='utilisateurs.php?param1='+document.form.champ1.value+'&param2='+document.form.champ2.value;
etc...



J'ai pas bien compris ta problématique peut-être ?

Qu'as-tu exactement ?
Ou est le formulaire à valider mère ou fille ?
Qui fait quoi ?

Je pose ces questions parceque la popup peut valider un formulaire dans
la fenètre mère ou vice versa.

Démosthène ;)


Avatar
Marie ALHOMME
Bonjour !

YD wrote:
Je ne réponds pas dans l'enfilade, puisque j'apporte un autre point
de vue.

Bien entendu, il faut utiliser l'attribut target de la balise <form>
dans la popup. Pour cela il faut que la fenêtre "mère" ait un nom !

Donc dans un script de la fenêtre mère :
window.name="theOpener"; //ou n'importe quel nom à réutiliser dans le
popup...

dans le popup
<form id="..." action="..." method="..." target="theOpener"
onsubmit="return true, setTimeout('self.close()',50);">

L'attribut onsubmit va valider le formulaire (return true)
puis fermer le popup peu après (la temporisation me semble nécessaire
pour que la fenêtre ne soit pas fermée avant que les données du
formulaire aient été transmises - le 50 à modifier si trop court...)

Si entre-temps la fenêtre mère a été fermée une autre s'ouvrira.


...et quel point de vue !! :)

Youpi-dou-da ça marche !
Après les 150 tests de ce matin, ça fait plaisir...

Bref, super merci beaucoup !! :)


Marie

1 2