Tous simplement car il n'est pas vide X)
Petit test : avant le if place un "print_r($_POST);" et dans le if la même chose.
Tu verras au lancement de ta page un Array() et dans le cas ou tu soumets ton formulaire quelque chose comme "Array( [nom] => );"
Solution : Utiliser la valeur d'un clé:
if(!empty($_POST'name'])){ }
EDIT: un moyen peut être plus simple si tu as de grand formulaire.
<?php
//test si l'utilisateur a soumit le formulaire
if(isset($_POST'formulaire'])){
//initialisation de erreur
$erreur='';
//boucle qui test chaque element
foreach ($_POST as $key => $value) {
//si la valeur est vide on inscrit la cle (qui est le name de l'input) dans une variable erreur
if($value == ''){
echo "Le champ \"$key\" est vide ! <br />";
$erreur.=$value.'@';
}
}
//test des erreurs => posibilité de transformer en tableau avec explode et de traiter
if($erreur == ''){
echo 'tous les champs sont remplis, YOUPI !';
}
echo '<hr />';
}
?>
<form action="index.php" method="post">
<input type="text"name="nom"/>
<input type="text" name="email" />
<input type="text" name="message" />
<input type="submit" value="ENV" name="formulaire"/>
</form>