KatsuJu
Messages postés2Date d'inscriptionjeudi 12 avril 2007StatutMembreDernière intervention18 avril 2007
-
17 avril 2007 à 16:50
KatsuJu
Messages postés2Date d'inscriptionjeudi 12 avril 2007StatutMembreDernière intervention18 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 :
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 ?
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 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>
KatsuJu
Messages postés2Date d'inscriptionjeudi 12 avril 2007StatutMembreDernière intervention18 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 :
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) ?