Ouvrir une fenètre popup depuis un formulaire

Petit nouveau ! | 5 Messages

29 juin 2011, 17:21

Bonjour,

J'espère que vous pourrez m'aidé à régler mon problème.
Je vous explique,je n'arrive pas à ouvrir une fenètre en popup,voici le script d'origine:

<?php
$TO = "[email protected]";
$subject = "monsujet";
$h = "From: " . $TO;
$message = "lemessage";
while (list($key, $val) = each($HTTP_POST_VARS)) {
$message .= "$key : $val\n";
}
mail($TO, $subject, $message, $h);
header("Location:accuse.html");
?>

J'ai essayé plein de script différent mais je n'arrive pas à faire ouvrir la page accuse.html dans une fenètre popup,systématiquement la page accuse.html s'ouvre dans un nouvel onglet.

Le but est qu'une fenètre s'ouvre en popup pour dire à la personne que le message est bien partie.

Si vous avez une idée sur la nature du problème d'avance,merci.

Eléphant du PHP | 171 Messages

29 juin 2011, 17:29

Le PHP est un langage qui s’exécute coté serveur. Il ne peut donc pas interagir avec le navigateur.

Pour ouvrir une pop-up il faut utiliser le code Javascript suivant qui lui peut interagir avec la navigateur:

<script>
window.open("accuse.html","pop_up","width=300, height=200, toolbar=no status=no" );
</script>

Donc en PHP dans ton cas, tu pourras mettre ça dans un echo.

Comme ceci :

echo '<script>
window.open("accuse.html","pop_up","width=300, height=200, toolbar=no status=no" );
</script>';
Le bon jugement s'apprend par l'expérience qui s'acquiert en partie par le mauvais jugement.

Petit nouveau ! | 5 Messages

29 juin 2011, 18:05

Merci beaucoup,j'ai rajouté ton code et ça fonctionne.
Ma page accuse s'affiche dans la fenètre popup.


<?php
$TO = "[email protected]";
$subject = "sujet";
$h = "From: " . $TO;
$message = "Message visiteur ";
while (list($key, $val) = each($HTTP_POST_VARS)) {
$message .= "$key : $val\n";
}
mail($TO, $subject, $message, $h);
echo '<script>
window.open("accuse.html","pop_up","width=300, height=200, toolbar=no status=no" );
</script>';
?>

Il reste un problème par contre,ma page formulaire.php s'ouvre toujours dans un nouvel onglet.
C'est à dire que je clic sur le bouton validé de ma page contact,de là la page forumlaire s'ouvre dans le nouvel onglet en plus de la page accuse.html en popup.

Il est possible que la page soit active sans qu'elle ne s'affiche à l'écran?
Modifié en dernier par blender le 29 juin 2011, 18:07, modifié 1 fois.

Eléphant du PHP | 142 Messages

29 juin 2011, 18:06

Bonjour,

la méthode de Skw33d fonctionne parfaitement.

Un petit supplément, clair et concis, pour gérer les attributs de la pop-up :
http://www.aliasdmc.fr/coursjavas/cours ... -attributs

Petit nouveau ! | 5 Messages

29 juin 2011, 22:20

Bonsoir,

Merci pour ton lien,il me sera bien utile.
Le script fontionne parfaitement.Le problème venait de mon fichier contact.html
Le problème de l'onglet et de la fenêtre pop-up sont résolu.

Il me reste un dernier petit souci,je n'arrive pas a faire la redirection vers ma page d'accueil tout en ayant la fenetre pop-up.


J'ai ajouter dans mon formulaire.php header("Location:accueil_022.htm");

Si je place cette fonction avant celle de la fenetre pop-up;redirection ok mais fenêtre pop-up ne s'ouvre pas.
Si je place header après le script du pop-up j'ai un message d'erreur

Warning: Cannot modify header information - headers already sent by (output started at /mnt/154/sda/3/9/mon.site/formulaire.php:12) in /mnt/154/sda/3/9/mon.sites/formulaire.php on line 13

Voici le formulaire:

<?php
$TO = "[email protected]";
$subject = "sujet";
$h = "From: " . $TO;
$message = "Message";
while (list($key, $val) = each($HTTP_POST_VARS)) {
$message .= "$key : $val\n";
}
mail($TO, $subject, $message, $h);
header("Location:accueil_022.htm")
echo '<script>
window.open("accuse.html","pop_up","width=300, height=200, toolbar=no status=no" );
</script>';
?>



Une idée du problème?
D'avance merci

Petit nouveau ! | 5 Messages

29 juin 2011, 22:46

J'ai trouvé!!!
Si ça peu aidé,voici ma solution.

J'ai ajouté ce script:
<head><meta http-equiv="refresh" content="0;URL=accueil_022.htm"></head>.