je suis un gros noob en php ! Alors désolé par avance de poser une question un peu bateau !!
Sur le site que je suis en train d'écrire, j'ai intégré un formulaire de contact dans une page "index.html".
Le quidam qui passe s'en sert pour m'envoyer un message. Le formulaire passe par la moulinette du serveur et je récupère les infos sur une BALE.
Je voudrais faire ceci :
- après avoir rempli tous les champs et cliqué sur "Envoyer", le quidam est dirigé sur index.html et un "bloc" apparait pour lui dire que son message a été envoyé.
- si le quidam oublie de remplir un champ (donc erreur), est dirigé sur index.html et un "bloc" apparait pour lui dire qu'il y a un problème.
Petit plus, le "bloc" qui doit apparaître imite la notification Growl (avec javascript jGrowl).
Attention, je voudrais "rediriger" d'abord (après succès ou échec du formulaire) puis ensuite afficher un message de succès ou d'erreurs.
Tout ça doit se passer sur la page index.html et non pas sur la page process.php. Cette dernière ne "sert" qu'a valider le formulaire et renvoyer les datas.
J'ai tenté plusieurs choses mais ça ne marche pas. Pouvez-vous m'aider, svp ? Merci.
Dans le fichier index.html, on trouve ceci pour le formulaire :
<div id="contact_form" class="clearfix">
<form method="post" action="process.php">
<label for="message"></label>
<textarea id="message" name="message" placeholder="Votre message ici" data-minlength="20"></textarea>
<label for="email"></label>
<input type="text" id="email" name="email" placeholder="votre e-mail"/>
<label for="name"></label>
<input type="text" id="name" name="name" placeholder="votre nom"/>
<input type="submit" value="envoyer" id="submit-button" />
</form>
</div><!-- END contact_form -->
Dans le fichier process.php, on trouve ceci pour le traitement du formulaire :
<?php
if(isset($_POST) && isset($_POST['name']) && isset($_POST['email']) && isset($_POST['message'])){
//sumbission data
$date = date('d/m/Y');
$time = date('H:i:s');
$ipaddress = $_SERVER['REMOTE_ADDR'];
extract($_POST);
if(!empty($name) && !empty($email) && !empty($message)){
$message=str_replace("\'","'",$message);
$destinataire="contact@mon_site.fr";
$sujet="[Formulaire de contact] Nouveau message";
$headers = "From: Form Processor" . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$emailbody = "<p>Un nouveau message a été envoyé depuis le formulaire.</p>
<p><strong>Nom : </strong> {$name} </p>
<p><strong>Adresse e-mail : </strong> {$email} </p>
<p><strong>Message : </strong> {$message} </p>
<p>Adresse IP de l'exp. : {$ipaddress} on {$date} at {$time}</p>";
mail($destinataire,$sujet,$emailbody,$headers);
header('Location : http://www.mon_site.fr');
}
else {
echo "Vous n'avez pas rempli tous les champs";
}
} // fin du if (!isset($_POST)...)
?>
Le .js qui imite la notification Growl (et annonce à l'internaute/quidam que son message a bien été envoyé ou non) :
Code : Tout sélectionner
$('#success').ready(function(){
jGrowlTheme(
'form', //
'Votre message a bien été envoyé', //
'vous recevrez une réponse bientôt' //
);
Code : Tout sélectionner
header('Location : http://www.mon_site.fr');Code : Tout sélectionner
ob_start();
echo "jGrowl machin code js";
header('Location: http://www.mon_site.fr');
ob_end_flush();