Alors,
<?php
// j'ai mis la partie php en haut de la page, c'est mieux...
// Ici, quoi qu'il arrive, que le formulaire soit soumis ou non
// Tu va parcourir le code... C'est ca ton problème, il faut donc
// Mettre un test...
// quand ton utilisateur enverras son formulaire, 2 variables de formulaire serons soumises
// $_POST['eMailNews'] contenant le mail et $_POST['action'] contenant OK
// Alors que quand tu charge la page normalement ces variables sont vides...
// On va donc se servir de $_POST['action'] afin de savoir si le formulaire est soumis...
if(isset($_POST['action']) and $_POST['action']=="OK")
{
// adresse de ta page pour redirection
$url = "tapage.php";
// Ici je te conseil de sécuriser un peut tout ca...
// Déjà l'utilisateur si il est malain peux contourner le javascript, ce serais pas mal
// donc de revérifier ce qu'il a envoyé...
$email = $_POST['eMailNews'];
// Si l'user n as pas entré de mail, on le redirige vers la page d'erreur avec le message 1
if($email == "")
{
header( 'HTTP/1.1 301 Moved Permanently' );
header( 'Location: ' . $url . '?erreur=1' );
die('Redirection php');
}
// Ici on utilise un filtre préconcus par php, si le texte
// Ne correspond pas a un mail on entre dans le if
// et on redirige avec le message d erreur 2
elseif(!filter_var($email, FILTER_VALIDATE_EMAIL))
{
header( 'HTTP/1.1 301 Moved Permanently' );
header( 'Location: ' . $url . '?erreur=2' );
die('Redirection php');
}
else
{
// Sinon si tout c bien déroulé... On insert et on redirige
// avec le message d erreur 0 qui correspondras pas réelement a un
// message d erreur
$host = "xxxx";
$user = "xxxx";
$pass = "xxxx";
$bdd = "xxxx";
@mysql_connect($host,$user,$pass)
or die("Impossible de se connecter");
@mysql_select_db($bdd)
or die("Impossible de se connecter");
mysql_query("INSERT INTO newsletters (eMail) VALUES('$eMailNews')");
mysql_close();
header( 'HTTP/1.1 301 Moved Permanently' );
header( 'Location: ' . $url . '?erreur=0' );
die('Redirection php');
}
}
?>
<script type="text/javascript">
function verif_formulaire()
{
if(document.formulaire.eMailNews.value == "") {
alert("Veuillez entrer votre adresse électronique!");
document.formulaire.eMailNews.focus();
return false;
}
// Nous pouvons utiliser un outil bien pratique pour vérifier des chaines de caractères
// Les Regex ici on vérifie que le texte contenu dans le champ mail contient bien
// En première position une lettre suivis d'autres lettres, . ou - _
// ^[\w\-]+(\.[\w\-]+)*
// Puis qu'il y a un arobase
// @
// Puis encore une série de lettre points - _
// [\w\-]+(\.[\w\-]+)*
// Et que le mail finis bien par un . qqch avec qqch 2 à 4 lettres
// \.[\w\-]{2,4}$
var regexpMail = /^[\w\-]+(\.[\w\-]+)*@[\w\-]+(\.[\w\-]+)*\.[\w\-]{2,4}$/;
// si la regex exécutée sur la chaine de caractères retourne null, c'est qu'elle
// ne corespond pas a un mail
if(regexpMail.exec(document.formulaire.eMailNews.value) == null) {
alert("Ce n'est pas une adresse électronique!");
document.formulaire.eMailNews.focus();
return false;
}
// Pour bien developer, il faut que ta fonction retourne quelquechose si c'est réussi
return true;
}
</script>
Abonnement newsletters
Entrez votre email...
<form id="formulaire" name="formulaire" onSubmit="return verif_formulaire()">
<!-- Ici j'ai ajouté la gestion de messages d'erreur php -->
<?php
// Lors de l'envois du formulaire, suivant les cas on as redirigé l'utilisateur vers les pages suivantes
// tapage.php?erreur=1 si il a pas entré de mail
// tapage.php?erreur=2 si il a entré un mail non valide
// tapage.php?erreur=0 si le formulaire a bien été soumis...
// Nous pouvons récuperer les bout d'url qui se trouvent après le point,
// d'interogation comme ca :
// $_GET['erreur] et cette variable contiendras ce qu'il y a après le =
// Pour plus de détail renseigne toi sur les variables d'url
if(isset($_GET['erreur']))
{
// En fonction de l'erreur message !
echo "
";
switch($_GET['erreur'])
{
case 0:
echo "Mail enregistré aves succès, merci !";
break;
case 1:
echo "Veuillez entrer une adresse mail, merci !";
break;
case 2:
echo "Veuillez entrer une adresse mail valide, merci !";
break;
default:
break;
}
echo "
";
}
?>
</form>
Hésite pas si tu comprends pas une partie du code...
_________________________________
Min iPomme