Bonjour,

J'ai une un formulaire html qui fait appel à un script php afin de récupérer et renvoyer les informations sur ma boite mail.

Jusqu'ici tout fonctionne bien mais après l'envoi je me retrouve sur une page blanche!! J'aimerais qu'après l'envoi du formulaire je reste sur la page du formulaire et qu'un popup s'affiche et indique:
"votre message à bien été envoyé" ou "Echec de l'envoi" si problème d'envoi.

Est-il possible de réaliser cela directement via le script php ou faut-il ajouter du javascript?

Merci.
Salut salut.

L'idéal serait d'avoir le code que tu utilises pour mieux te renseigner.

Mais déjà, tu ne devrais pas te retrouver avec une page blanche, à moins que l'adresse rentrer soit erroné.

Vérifie bien les lignes, une qui ressemblerait plus ou moins à ça :
echo '<meta http-equiv="Refresh" content="0;URL=http://xxx/Contact/index.php" />';}


Aprés, pour l'histoire du popup, je pense pas qu'il y est de prblms à ça, il te suffit de trouver un morceau de code pour un popup et d'y incorporer le tiens.

Mais au lieu d'un popup, ne préférerais tu pas qu'il y est juste une ligne qui s'affiche sur la même page, ou une deuxiéme page ?
Dans ton formulaire, tu as un attribut action. Si tu laisse cet attribut vide (ou que tu mets <?php $_SERVEUR['PHP_SELF']; ?>), le formulaire enverra les informations sur cette même page.

Donc, tu peux mettre le code PHP de traitement de formulaire avant l'affichage de ce formulaire avec un code dans le genre :

<?php
   if (isset($_POST['submit']))
   {
       #TRAITEMENT DE TON FORMULAIRE VALIDE
      $alerte = "Votre message a bien été envoyé";

      #TRAITEMENT DE TON FORMULAIRE NON VALIDE
      $alerte = "Echec de l'envoi";
   }
?>


ton code HTML

<?php if (isset($alerte)) { echo $alerte; } ?>


<form action = "" method="post">
    <!-- tes champs de formulaire -->
    <input type="submit" name="submit" value="envoyer" />
</form>
Merci pour vos réponse rapides.

@MattBPA, j'ai essayé d'intégrer tes morceaux de codes mais ça ne fonctionne pas, j'ai du faire une erreur quelque part.

@K-gouille: J'ai réussi à faire en sorte qu'un message de confirmation s'affiche mais ça reste très moche!! Comment faire pour intégrer ce message sur une nouvelle page?

Voici mon formulaire que vous pouvez tester: http://bliink.fr/reservation.html

et voici la partie traitement PHP (C'est très basique, il manque surement beaucoup d'éléments...je n'y connais rien en PHP):

<?php 

//Déclaration du destinataire, objet

$destinataire="grosbenji@yahoo.fr";
$sujet="Réservation en ligne"; 
 
//récupération des variables

$civilite = htmlspecialchars ($_POST['civilite']);
$nom = htmlspecialchars ($_POST['nom']); 
$societe = htmlspecialchars ($_POST['societe']);
$prenom = htmlspecialchars ($_POST['prenom']); 
$email = htmlspecialchars ($_POST['email']); 
$telephone = htmlspecialchars ($_POST['telephone']);
$trajet = htmlspecialchars ($_POST['trajet']);
$datealler = htmlspecialchars ($_POST['datealler']);
$heurealler = htmlspecialchars ($_POST['heurealler']);
$dateretour = htmlspecialchars ($_POST['dateretour']);
$heureretour = htmlspecialchars ($_POST['heureretour']);
$passagers = htmlspecialchars ($_POST['passagers']);
$enfants = htmlspecialchars ($_POST['enfants']);
$pmr = htmlspecialchars ($_POST['pmr']);
$animaux = htmlspecialchars ($_POST['animaux']);
$transportprofessionnel = htmlspecialchars ($_POST['transportprofessionnel']);
$paiement = htmlspecialchars ($_POST['paiement']);
$commentaires = htmlspecialchars ($_POST['commentaires']);


//Déclaration du mail en format texte 

$body	.= "Client : ".$civilite." ".$nom." ".$prenom."\n\n";
$body	.= "Société : ".$societe."\n";  
$body	.= "Telephone : ".$telephone."\n"; 
$body	.= "E-mail : ".$email."\n\n";
$body	.= "Trajet : ".$trajet."\n\n";
$body	.= "Date aller : ".$datealler."\n";
$body	.= "Heure aller : ".$heurealler."\n\n";
$body	.= "Date retour : ".$dateretour."\n";
$body	.= "Heure retour : ".$heureretour."\n\n";
$body	.= "Nombre de passagers : ".$passagers."\n\n";
$body	.= "Enfants : ".$enfants."\n";
$body	.= "PMR : ".$pmr."\n";
$body	.= "Animaux : ".$animaux."\n";
$body	.= "Transport pro : ".$transportprofessionnel."\n\n";
$body	.= "Mode de paiement : ".$paiement."\n\n";
$body	.= "Commentaires : ".$commentaires."\n"; 


//Envoie du mail 

    if(@mail($destinataire,$sujet,$body)) { 
        echo 'Votre réservation a bien été prise en compte.<br/>
				Nous vous contacterons dans les plus brefs délais afin d\'organiser au mieux votre voyage.<br/>
				Merci de votre confiance.<br/>
				L\'équipe Panda!<br/><br/>
				<a href="reservation.html">Retour à la page d\'accueil</a>';  
    } else { 
        echo 'Echec de envoi.<br/>Veuillez<a href="reservation.html">Réessayer</a>'; 
    } 

?>

Modifié par grosbenji (01 Oct 2012 - 16:36)
En gros :

- on reste sur la même page (suppression de formulaire.php dans l'attribut action du form
- on met le code php qui traite le formulaire en début de page et on fait en sorte qu'il ne soit exécuté que quand le formulaire est soumis (if isset($_POST['envoi'])))
- on remplace les echo par des variables, ce qui permet d'afficher le contenu quand on veut dans la page
- si la variable $alerte existe (donc si le formulaire a été soumis), on l'affiche.

<?php 

if (isset($_POST['envoi']))
{
//Déclaration du destinataire, objet

$destinataire="grosbenji@yahoo.fr";
$sujet="Réservation en ligne"; 
 
//récupération des variables

$civilite = htmlspecialchars ($_POST['civilite']);
$nom = htmlspecialchars ($_POST['nom']); 
$societe = htmlspecialchars ($_POST['societe']);
$prenom = htmlspecialchars ($_POST['prenom']); 
$email = htmlspecialchars ($_POST['email']); 
$telephone = htmlspecialchars ($_POST['telephone']);
$trajet = htmlspecialchars ($_POST['trajet']);
$datealler = htmlspecialchars ($_POST['datealler']);
$heurealler = htmlspecialchars ($_POST['heurealler']);
$dateretour = htmlspecialchars ($_POST['dateretour']);
$heureretour = htmlspecialchars ($_POST['heureretour']);
$passagers = htmlspecialchars ($_POST['passagers']);
$enfants = htmlspecialchars ($_POST['enfants']);
$pmr = htmlspecialchars ($_POST['pmr']);
$animaux = htmlspecialchars ($_POST['animaux']);
$transportprofessionnel = htmlspecialchars ($_POST['transportprofessionnel']);
$paiement = htmlspecialchars ($_POST['paiement']);
$commentaires = htmlspecialchars ($_POST['commentaires']);


//Déclaration du mail en format texte 

$body	.= "Client : ".$civilite." ".$nom." ".$prenom."\n\n";
$body	.= "Société : ".$societe."\n";  
$body	.= "Telephone : ".$telephone."\n"; 
$body	.= "E-mail : ".$email."\n\n";
$body	.= "Trajet : ".$trajet."\n\n";
$body	.= "Date aller : ".$datealler."\n";
$body	.= "Heure aller : ".$heurealler."\n\n";
$body	.= "Date retour : ".$dateretour."\n";
$body	.= "Heure retour : ".$heureretour."\n\n";
$body	.= "Nombre de passagers : ".$passagers."\n\n";
$body	.= "Enfants : ".$enfants."\n";
$body	.= "PMR : ".$pmr."\n";
$body	.= "Animaux : ".$animaux."\n";
$body	.= "Transport pro : ".$transportprofessionnel."\n\n";
$body	.= "Mode de paiement : ".$paiement."\n\n";
$body	.= "Commentaires : ".$commentaires."\n"; 


//Envoie du mail 

    if(@mail($destinataire,$sujet,$body)) { 
         $alerte =  'Votre réservation a bien été prise en compte.<br/>
				Nous vous contacterons dans les plus brefs délais afin d\'organiser au mieux votre voyage.<br/>
				Merci de votre confiance.<br/>
				L\'équipe Panda!<br/><br/>
				<a href="reservation.html">Retour à la page d\'accueil</a>';  
    } else { 
       $alerte = 'Echec de envoi.<br/>Veuillez<a href="reservation.html">Réessayer</a>'; 
    } 

?>


<?php if (isset($alerte)) { echo $alerte; } ?>


<form name="form" id="contact" method="post" action="">
blablabla				
</form>
Je viens de suivre tes instructions mais ça ne fonctionne pas, j'ai essayé de mettre le code php de traitement du formulaire avant le Doctype, dans le head et dans le body mais à chaque fois la fin du code se retrouve affiché dans le body.

De plus, je ne reçois plus rien sur ma boite mail!!

Voici ce que ça donne: http://bliink.fr/reservation.html
J'vais peut être pas réécrire toute ta page de code non plus, mais la balise pour mettre du code PHP, c'est <?php, pas <!--?php

Donc si tu remplaces <!--?php par <?php et ton <br--> par <br /> ?>, ça devrait déjà améliorer le truc.
J'ai bien écrit <!php et ?> sur ma page mais le navigateur les interprètent comme un commentaire et les transforment respectivement en <!--?php et ?--> (j'ai du remplacer les <br/> par "\n" car ils étaient aussi transformés en <br-->).

Du coup l'envoi du mail ne fonctionne pas!!

Y a t-il un moyen de résoudre ce problème?
Je viens de tilter que tu ne pourras pas exécuter du code php sur une page qui a une extension .html. Il faut que le fichier ait une extension .php
Merci beaucoup pour ton aide, ça fonctionne.
Par contre sait-tu pourquoi le message d'erreur "echec de l'envoi" apparait à l'écran même avant l'envoi du formulaire?
Oui, parce que dans le code que je t'ai mis j'ai oublié de fermer ma première condition Smiley cligne

//Envoie du mail 

    if(@mail($destinataire,$sujet,$body)) { 
         $alerte =  'Votre réservation a bien été prise en compte.<br/>
				Nous vous contacterons dans les plus brefs délais afin d\'organiser au mieux votre voyage.<br/>
				Merci de votre confiance.<br/>
				L\'équipe Panda!<br/><br/>
				<a href="reservation.html">Retour à la page d\'accueil</a>';  
    } else { 
       $alerte = 'Echec de envoi.<br/>Veuillez<a href="reservation.html">Réessayer</a>'; 
    }
} [b]<= Rajouter cette accolade[/b]

?>