Rechargement page mére après submit dans un popup et insertion dans bdd

bruno9173 Messages postés 44 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 19 avril 2010 - 30 août 2009 à 07:41
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 - 30 août 2009 à 17:27
Bonjour,

J'ai 2 fenêtres, une mére (page A) avec des données provenant de mysql, et un popup pour modifier les données de page A. Après validation du formulaire dans le popup, j'update ma base mysql puis je dois recharger la page A après un timeout (le temps de bien insérer les données) et fermer le popup.

Pour résumer :

Recharger la page A, après 2 secondes (le temps d'insérer les données bdd).
Fermer le popup.

Voila ou j'en suis :

Code :

function validation() 
{  
if(document.getElementById('champ1').value == '') 
{ 
        alert ('message'); 
        document.getElementById('champ1').focus(); 
        return false; 
    	}
else {
if(document.getElementById('form').submit) {
setTimeout(window.opener.location.reload("A"),2000);
return true;
}		
    }
}




Merci pour votre aide

10 réponses

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
30 août 2009 à 08:31
Bonjour,

c'était presque cela
sauf que "A" : connait pas !
et syntaxe du setTimeout
setTimeout("window.opener.location.reload();",2000);

et ça : >>après 2 secondes (le temps d'insérer les données bdd).
pas compris ???
ce n'est pas pop-up qui met à jour la base de données ?
mais quoiqu'il arrive : c'est le retour du serveur
et pas 2 secondes qu'il faut attendre
( ça poserait problème un jour ou l'autre )

Cordialement
0
bruno9173 Messages postés 44 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 19 avril 2010
30 août 2009 à 11:44
Merci Bull3,

"A" c'est la page A, ma page mère.

Si c'est le popup qui met à jour la bdd.

Je ne savais pas que l'on pouvait attendre le retour du serveur avant une action, du coup j'ai mis 2 secondes d'attente. Comment fais-ton pour le retour serveur ?

J'ai modifié la syntaxe du setTimeout, mais ma fonction doit-être mal écrite car il ne se passe rien quand je valide les modifications dans le popup.
Pas fermeture de popup ni de rafraichissement de la page mère, par contre les données sont mises à jour dans la bdd.

Si tu as 5 min pour m'aider c'est pas de refus :)
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
30 août 2009 à 14:27
>>"A" c'est la page A, ma page mère.
non non ! c'est window.opener
et ça n'admet pas de paramètres.

>>Je ne savais pas que l'on pouvait attendre le retour
>>du serveur avant une action,
bah... ça dépend de comment vous appelez ce serveur
par un formulaire ou par l'url, c'est le serveur
qui créée la réponse
donc mettre un temps d'attente ne rime à rien
puisque tout est remplacé, que la page qui lance
n'existe plus !
avec ajax, la réponse est retournée dans une
variable qu'exploite le javascript
et le temps de réponse est.... variable,
il faut.. mais bon, on verra si c'est ce
que vous utilisez comme mode d'appel.

je pense que les "relations" serveur <==> micro
vous échappent un peu.
c'est normal, et pas si simple à appréhender...

0
bruno9173 Messages postés 44 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 19 avril 2010
30 août 2009 à 15:37
je ne sais pas. je ne vois pas de fonction.


euh...c'est pas une fonction bien écrite mais "function validation()" n'est pas une fonction ??

ça dépend de comment vous appelez ce serveur
par un formulaire ou par l'url


J'appelle un script php par un formulaire post.

Merci pour le lien :)
0

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

Posez votre question
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
30 août 2009 à 15:49
>>c'est pas une fonction bien écrite mais "function validation()"
j'aurais du être plus précis....

>>J'appelle un script php par un formulaire post.
donc ça lance un script php
qui va recharger/recréer une nouvelle page html
le setTimeout est inutile, puisque
suite à la soumission de ce formulaire
cette page est "perdue", elle va être
replacée par la réponse du php.

c'est dans la page crée par le php en
réponse qu'il faut faire "le boulot"
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
30 août 2009 à 15:53
question : dans la page créée par la réponse
pourrez-vous retrouver la page mère initiale ?
window.opener fonctionne-t-il encore ?
ce n'est plus le pop-up créé par la page mère
mais la page créée par la réponse du php qui
met à jour la base !
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
30 août 2009 à 16:11
donc... à mon humble avis, mauvaise "piste"

_ l'appel du php peut être dans le page mère,
on le déclenche depuis le pop-up et ce pop-up
est refermé dès que la réponse est revenue
dans la page mère [ bof ;o( ]
_ on utilise ajax dans le pop-up [ bof ;o( ]
_ plutôt que d'utiliser un pop-up ( qui est
d'ailleurs généralement refusé par les visiteurs ! )
utilisez un div caché, affiché lorsque que c'est
nécessaire ( style.display="none" ou "inline" )
tout se passera dans la même page ( la page mère )
et comme il faut la regénérer
_ ... ou autre ( mais c'est tout ce qui me vient
sur le coup )
0
bruno9173 Messages postés 44 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 19 avril 2010
30 août 2009 à 16:37
ce n'est plus le pop-up créé par la page mère
mais la page créée par la réponse du php qui
met à jour la base !


Au départ je voulais tous faire dans la même page, mais le "client" n'a pas voulu, c'est une application intranet, pas un site web, quoique la différence est mince. L'ajax serait la solution révé pour une grande interactivité digne d'une appli. mais je débute en ajax, j'ai fais quelques essais sur 2 pages pour l'instant est ça fonctionne, mais là je n'ai pas le temps de revoir tous les scripts.

c'est dans la page crée par le php en
réponse qu'il faut faire "le boulot"


Oui ça parait clair, j'ai compris que le popup n'existé plus après la validation de son formulaire, du coup il faut rafraîchir la page window.opener(mère)depuis cette page, mais comment faire pour que le rafraîchissement s'exécute seulement après la fermeture du popup ? Comment dire à la page mère, le popup est fermé tu peux rafraîchir ?

question : dans la page créée par la réponse
pourrez-vous retrouver la page mère initiale ?
window.opener fonctionne-t-il encore ?


Pour le moment oui je retrouve la page initiale puisqu'elle n'est pas rafraîchit.
0
bruno9173 Messages postés 44 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 19 avril 2010
30 août 2009 à 16:41
l'appel du php peut être dans le page mère,
on le déclenche depuis le pop-up et ce pop-up
est refermé dès que la réponse est revenue
dans la page mère


Pour le moment, oui c'est l'objectif. le php est déclenché dans le script du popup. Avec mon niveau de compétence, je ne sais pas faire autrement.
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
30 août 2009 à 17:27
j'ai testé, car je ne me souvenais plsu
depuis un pop-up, si on appelle du php
qui recrée une page , à prirori, on peut
bien rappeler la page mère
est-ce dans tous les cas ? je ne sais pas !

page mère :

<form name="frm">



</form>


p1.htm ( pour l'exemple, pop-up normale ):




p2.htm qui va appeler du php

<form name="pop"
method="post"
action="p3.php">

</form>


p3.php donc, où window.opener appelle bien
la page mère ( mais est-ce toujours ? )





pour vous donc, remplacer dans p3.php
par window.opener.reload() puis
window.close() avec setTimeout en javascript
ou par l'appel de la page mère en php
après avoir mis à jour
0
Rejoignez-nous