2013-07-08 1 views
0

J'ai un problème avec mon code php.PHP montrant autre "erreur" lorsqu'il n'est pas appelé

Je ne veux pas que le else echo "Check it again!"; s'affiche à moins d'entrer des données dans le formulaire (zone de saisie) et que ce n'est pas valide. Mais quand je charge la page il montre l'erreur au-dessus de la boîte.

<?PHP 
if (filter_var($email, FILTER_VALIDATE_EMAIL)) { 
    mysql_query("INSERT INTO newsletter (email) VALUES('$email')") or die(mysql_error()); 
     echo 'You have registered your E-Mail address to our database! You will now receive regular updates on the progess!'; 
    }else{ 
     echo "Check it again!"; 
} 
?> 

<form name="newsletter" method="post" action="<?PHP $_SERVER['PHP_SELF']?>"> 
<input type="text" name="newsletter" id="newsletter"> 
<input type="submit" value="SUBMIT!"> 
</form> 
+0

Où est défini le $ email? –

+0

include ('./_inc/config.php'); $ email = $ _POST ['newsletter']; $ email = stripslashes ($ email); – user2562492

+0

Vérifie si un champ de message est défini en premier. C'est PHP de base et vous obtiendrez quelques millions de résultats d'une recherche google ... if (isset ($ _ POST ['newsletter'])) –

Répondre

2

Try this :)

<?PHP 
if($_SERVER["REQUEST_METHOD"]=="POST"){ 
    if (filter_var($email, FILTER_VALIDATE_EMAIL)) { 
     mysql_query("INSERT INTO newsletter (email) VALUES('$email')") or die(mysql_error()); 
      echo 'You have registered your E-Mail address to our database! You will now receive regular updates on the progess!'; 
     }else{ 
      echo "Check it again!"; 
    } 
} 
?> 

au lieu de

<?PHP 

if (filter_var($email, FILTER_VALIDATE_EMAIL)) { 
    mysql_query("INSERT INTO newsletter (email) VALUES('$email')") or die(mysql_error()); 
    echo 'You have registered your E-Mail address to our database! You will now receive regular updates on the progess!'; 
    }else{ 
     echo "Check it again!"; 
    } 
} 

?> 

logique derrière l'édition: Nous allons vérifier pour l'e-mail ou imprimer "Réessayez!" seulement si le formulaire est soumis. Maintenant, si nous ne vérifions pas si le formulaire est soumis ou s'il s'agit du premier chargement (ou rafraîchissement simple) de la page, l'insertion ou l'affichage des erreurs se produira. Et nous ne le voulons pas :)

+0

Merci !!!!!!!! – user2562492

+0

heureux de savoir que cela a fonctionné pour vous :) S'il vous plaît ne pas oublier de le marquer comme la réponse acceptée :) – Fallen

0

Ceci est juste une alternative à @MuhammedHedayet répondre dans le style que je préfère, en le vérifiant seulement quand vous en avez besoin. Les deux devraient fonctionner parfaitement:

<?PHP 
if (filter_var($email, FILTER_VALIDATE_EMAIL)) { 
    mysql_query("INSERT INTO newsletter (email) VALUES('$email')") or die(mysql_error()); 
     echo 'You have registered your E-Mail address to our database! You will now receive regular updates on the progess!'; 
    } else if ($_SERVER["REQUEST_METHOD"]=="POST"){ 
     echo "Check it again!"; 
} 
?> 

<form name="newsletter" method="post" action="<?PHP $_SERVER['PHP_SELF']?>"> 
<input type="text" name="newsletter" id="newsletter"> 
<input type="submit" value="SUBMIT!"> 
</form>