Fermeture du popup et redirection avec un bouton Envoyer

Résolu
KatsuJu Messages postés 2 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 18 avril 2007 - 17 avril 2007 à 16:50
KatsuJu Messages postés 2 Date d'inscription jeudi 12 avril 2007 Statut Membre 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

2 réponses

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
17 avril 2007 à 22:32
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)
0
KatsuJu Messages postés 2 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 18 avril 2007
18 avril 2007 à 15:24
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...
0
Rejoignez-nous