Fermeture du popup et redirection avec un bouton Envoyer [Résolu]

Messages postés
2
Date d'inscription
jeudi 12 avril 2007
Dernière intervention
18 avril 2007
- - Dernière réponse : KatsuJu
Messages postés
2
Date d'inscription
jeudi 12 avril 2007
Dernière intervention
18 avril 2007
- 18 avril 2007 à 15:24
Bonjour

D'abord, je dois m'excuser, même si la réponse à ma question se trouve probablement sur le site, j'ai été incapable de la trouver
Et en plus, si ça se trouve, vu mon niveau de compétence en la matière qui est plutôt faible, mon problème relève peut-être plus du php que du java, auquel cas je m'excuse par avance du dérangement.

Voilà quel est mon problème : j'ai créé un formulaire de commande fondé sur un  formulaire genre envoi mail.
Ce formulaire s'ouvre dans un popup, avec le code suivant sur la page d'appel :

[commande.html Envoyez un message]


Ce formulaire est rédigé ainsi :

<form method="post" action="commande.php">

 

    <center>       

        Votre Nom :

            

       

        Votre e-Mail :

            

       

       Adresse postale :&nbsp;

             <textarea name="adresse" cols="30" rows="4" style="background-color: rgb(218, 241, 233);"
align="middle" ;=""></textarea>

       

        Votre Message :

             <textarea name="message" cols="50" rows="10" style="background-color: rgb(218, 241, 233);"
align="left" ;=""></textarea>

      

        

    </center>

 

</form>


Au cas où ça serait utile, mon fichier "commande.php" est rédigé ainsi :

<?php

$msg = "Nom : \t\t$nom\n";

$msg .= "e-Mail :\t$email\n";

$msg .= "Adresse :\n\n$adresse\n\n";

$msg .= "Message :\t$message\n\n";

$destinataire = " #adresse mail valide# ";

$objet = " $nom : Achat - Liste\n";

$entetes = "From: #site perso# <> \n";

$entetes . = "Reply-To: $email\n\n";

mail($destinataire, $objet, $msg, $entetes);

?>

J'aurais souhaité qu'en cliquant sur le bouton Envoyer, le popup se ferme et  que l'utilisateur soit redirigé vers la fenêtre principale, sur ma page "message envoyé".

Est-ce que quelqu'un aurait une remède-miracle, ou tout du moins un début de solution ?

Merci d'avance
Afficher la suite 

Votre réponse

2 réponses

Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Dernière intervention
14 janvier 2011
0
Merci
B
onsoir...
Je ne connais rien en matière de formulaire et d'envoi aussi ce qui suis est à prendre avec des pincettes, c'est juste pour un début de solution

ajout de l'événement onsubmit à la form
<form method="post" action="commande.php" onsubmit="return(Close_Fenetre());">

avec bien sur entre <head> et </head>
<script language="JavaScript" type="text/javascript">
//----------------------
function Close_Fenetre(){
 window.opener.focus();            // focus sur fenetre parent
 setTimeout("self.close()", 100);  // Differe la fermeture
}
</script>

Donc à tester et à améliorer c'est sur...
;0)
Commenter la réponse de PetoleTeam
Messages postés
2
Date d'inscription
jeudi 12 avril 2007
Dernière intervention
18 avril 2007
0
Merci
Bonjour

D'abord, merci beaucoup PetoleTeam, j'avoue que je ne m'attendais pas à avoir une réponse aussi rapidement !

Et je me suis aperçu qu'en fait, je n'avais pas été assez explicite sur ce que je voulais vraiment faire.

Pour être clair (pas facile... ), la page A appelle le formulaire/popup, qui, une fois soumis (POST), redirige la page A vers la page B et se ferme tout seul comme un grand.

En partant de la suggestion de PetoleTeam, j'ai adapté (bidouillé ?) ceci :

<script language="JavaScript" type="text/javascript">

  function close_fenetre(){

    opener.focus();opener.location.href = (" #adresse de la page B# ");

    setTimeout("self.close()", 1000);

}

</script>

<hr size ="2" width="100%" />Je ne sais pas si c'est très élégant, mais ça fonctionne... \o/

Histoire de ne pas jouer à l'apprenti sorcier et d'être sûr d'avoir compris :
En très gros, et sauf vilaine erreur de ma part, le setTimeout permet au formulaire d'avoir le temps de "passer" ses données (POST) à la page php pour qu'elle les "intègre" au mail. Donc, si je me contentais d'un self.close(), je recevrais un mail avec des valeurs vides pour les variables

$destinataire, $objet, $msg, $entetes

C'est ça ?

Bon, et avant de considérer mon problème comme résolu, je me permettrai une dernière question subsidiaire : sous réserve que le javascript soit activé, est-ce que cette solution est "fiable" et "universelle", c'est-à-dire est-ce qu'elle fonctionne 100% du temps avec 100% des navigateurs (ou du moins avec les plus courants) ?

Merci...
Commenter la réponse de KatsuJu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.