Problemas con campos obligatorios

Hola Maop, te cuento mi problema:
Tengo una base de datos en Mysql, y le inserto datos a través de un formulario, hasta ahí ningún problema, lo que sucede es que tengo unos datos del formulario que son obligatorios, y si no lo completas sale un mensaje, pero aún así se cargan en la base de datos, el mensaje que me sale es:
El campo contraseña esta vacioEl campo e-mail esta vacioEl campo sección esta vacioEl campo Provincia esta vacioPara continuar debe aceptar las condiciones de uso
Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\mi base de datos\solicitarpresupuestos.php:20) in C:\AppServ\www\mi base de datos\solicitarpresupuestos.php on line 40
Entonces lo que yo quiero es que si no rellenas algún campo de los obligatorios, que aparte de salir un mensaje, que no se inserten en la base de datos.
¿Me podrías ayudar?, te agradecería me lo explicases en lenguaje que entienda, ya que soy novato.
Este es el php que inserta los datos en la base:
<?
$usuario = $_POST['usuario'] ;
$contrasena = $_POST['contrasena'];
$email = $_POST['email'];
$seccion = $_POST['seccion'];
$provincia = $_POST['provincia'];
$titulo = $_POST['titulo'];
$telefono = $_POST['telefono'];
$movil = $_POST['movil'];
$localidad  = $_POST['localidad'];
$dias = $_POST['dias'];
$descripcion  = $_POST['descripcion'];
$sugerencias= $_POST['sugerencias'];
$acepto= $_POST['acepto'];
{if (empty($_POST['usuario']))
 echo "El campo usuario esta vacio";
if (empty($_POST['contrasena']))
 echo "El campo contraseña esta vacio";
if (empty($_POST['email']))
 echo "El campo e-mail esta vacio";
if (empty($_POST['seccion']))
 echo "El campo sección esta vacio";
if (empty($_POST['provincia']))
 echo "El campo Provincia esta vacio";
if (empty($_POST['titulo']))
 echo "El campo Titulo esta vacio";
if (empty($_POST['acepto']))
 echo "Para continuar debe aceptar las condiciones de uso";}
$conexion = mysql_connect("localhost", "root", "mi contraseña");
mysql_select_db("mi base de datos", $conexion);
$ssql = "INSERT INTO clientes (usuario,contrasena,email,seccion,provincia,titulo,telefono,movil,
localidad,dias,descripcion,sugerencias,acepto)
 VALUES('$usuario','$contrasena','$email','$seccion','$provincia','$titulo','$telefono','$movil',
'$localidad','$dias','$descripcion','$sugerencias','$acepto')";
{header ("Location:solicitud enviada.html");}
$rs = mysql_query($ssql, $conexion ) or die(mysql_error());
?>
Muchas gracias.
1

1 respuesta

Respuesta
1
Al hacer echo, ya estas enviando los headers, por lo que no puedes hacer un header Location.
Lo que tiene que hacer es algo así
$mess = "";
if (empty($_POST['usuario']))
$error = true
 $mess .= "El campo usuario esta vacio";
if (empty($_POST['contrasena']))
 $error = true
 $mess .= "El campo contraseña esta vacio";
Y asì con el resto de los campos. luego haces un
if($error){
echo $mess;
}else{
mysql_select_db("mi base de datos", $conexion);
$ssql = "INSERT INTO clientes (usuario,contrasena,email,seccion,provincia,titulo,telefono,movil,
localidad,dias,descripcion,sugerencias,acepto)
 VALUES('$usuario','$contrasena','$email','$seccion','$provincia','$titulo','$telefono','$movil',
'$localidad','$dias','$descripcion','$sugerencias','$acepto')";
$rs = mysql_query($ssql, $conexion ) or die(mysql_error());
header ("Location:solicitud enviada.html");
}
Ante todo darte las gracias por tu buena respuesta, pero aún tengo un problema:
Cuando falta por completar alguno de los campos obligatorios (sea el que sea), me sale el mismo error :Debe aceptar las CONDICIONES DE USO, por lo demás va bien.
El php me ha quedado así:
<?
$usuario = $_POST['usuario'] ;
$contrasena = $_POST['contrasena'];
$email = $_POST['email'];
$seccion = $_POST['seccion'];
$provincia = $_POST['provincia'];
$titulo = $_POST['titulo'];
$telefono = $_POST['telefono'];
$movil = $_POST['movil'];
$localidad  = $_POST['localidad'];
$dias = $_POST['dias'];
$descripcion  = $_POST['descripcion'];
$sugerencias= $_POST['sugerencias'];
$acepto= $_POST['acepto'];
 $mess = "";
if (empty($_POST['usuario']))
$error = true;
$mess="Debe poner un usuario.";
if (empty($_POST['contrasena']))
 $error = true;
 $mess = "Debe poner una contraseña.";
if (empty($_POST['email']))
 $error = true;
 $mess = "Debe poner un E-mail válido.";
if (empty($_POST['seccion']))
 $error = true;
 $mess = "Debe poner una sección.";
if (empty($_POST['provincia']))
 $error = true;
 $mess = "Debe poner la provincia .";
if (empty($_POST['titulo']))
 $error = true;
 $mess = "Debe poner un Título.";
if (empty($_POST['acepto']))
 $error = true;
 $mess = "Debe aceptar las CONDICIONES DE USO";
if($error){
echo $mess;
}else{
$conexion = mysql_connect("localhost", "root", "mi contraseña");
mysql_select_db("mi base de datos", $conexion);
$ssql = "INSERT INTO clientes (usuario,contrasena,email,seccion,provincia,titulo,telefono,movil,
localidad,dias,descripcion,sugerencias,acepto)
 VALUES('$usuario','$contrasena','$email','$seccion','$provincia','$titulo','$telefono','$movil',
'$localidad','$dias','$descripcion','$sugerencias','$acepto')";
$rs = mysql_query($ssql, $conexion ) or die(mysql_error());
header ("Location:solicitud enviada.html");
}
?>
¿Me puedes ayudar?, y por último otra pregunta :
¿Si cuando falta algún campo quiero mandarlo a otra página,¿cómo lo hago?
Muchas gracias por tu ayuda.
Falta un punto delante del = tendría que ser algo así
if (empty($_POST['usuario'])){
$error = true;
$mess.="Debe poner un usuario.";
}
if (empty($_POST['contrasena'])){
 $error = true;
 $mess .= "Debe poner una contraseña.";
}
etc.
Y no te olvides de los {}
Marcelo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas