Teniendo en cuenta que $_POST es un array, se puede comprobar primero la cantidad de valores que tiene el array:
<?php
if(count($_POST)>=1)) {
}
?>
Despues con foreach, comprobamos si cada elemento del array esta vacio o no:
while (list($key) = each($_POST)) {
if($_POST[$key]==NULL) $error .= "El campo ".$key." no debe de estar vacio. \n";
}
Despues comprobamos si la variable error esta definida o no:
if(isset($error)) {
echo $error;
} else {
if (mail("[email]elx.gerald@gmail.com[/email]", "Formulario de Contacto", $mensaje, $cabecera)){
echo "<center>El mensaje fue enviado correctamente</center></br>";
}
else{
echo "El Mensaje no fue enviado correctamente";
}
}
El codigo final, seria:
<?php
if(count($_POST)>=1)) {
$nick = $_POST['nick'];
$paginaweb = $_POST['web'];
$banner = $_POST['banner'];
$email = $_POST['email'];
$categoria = $_POST['radio'];
$comentario = $_POST['comentario'];
$mensaje = "Nick: ". $_POST['nick'] . "\n";
$mensaje .= "Pagina Web: ". $_POST['web'] . "\n";
$mensaje .= "Banner: ". $_POST['banner'] . "\n";
$mensaje .= "Email: ". $_POST['email'] . "\n";
$mensaje .= "Comentario: ". $_POST['comentario'] . "\n";
$mensaje .= "Categoria: ". $_POST['radio'] . "\n";
$cabecera = "From: $nick <$email> \r\n";
$cabecera .= "Reply-To: $email";
while (list($key) = each($_POST)) {
if($_POST[$key]==NULL) $error .= "El campo ".$key." no debe de estar vacio. \n";
}
if(isset($error)) {
echo $error;
} else {
if (mail("elx.gerald@gmail.com", "Formulario de Contacto", $mensaje, $cabecera)){
echo "<center>El mensaje fue enviado correctamente</center></br>";
}
else{
echo "El Mensaje no fue enviado correctamente";
}
}
}
?>
Para que el codigo funcione correctamente, quita el atributo name al boton que envia el formulario, ya que si el value de este esta vacio te va a dar error.
Un saludo.