Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] error formulario

Estas en el tema de error formulario en el foro de Javascript en Foros del Web. me hace insert aun dando error el codigo es este Código: if(isset($_POST['enviar'])){ $errors = array(); // declaramos un array para almacenar los errores if($_POST['correo_electronico'] == ...
  #1 (permalink)  
Antiguo 15/06/2015, 03:50
 
Fecha de Ingreso: junio-2015
Ubicación: sevilla
Mensajes: 4
Antigüedad: 8 años, 10 meses
Puntos: 0
error formulario

me hace insert aun dando error

el codigo es este
Código:
    if(isset($_POST['enviar'])){
        $errors = array(); // declaramos un array para almacenar los errores
		if($_POST['correo_electronico'] == '' or !preg_match("/^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/",$_POST['correo_electronico'])){
            $errors[1] = 'Ingrese un email correcto';
        }else if($_POST['dni'] == ''or !preg_match("/^[0-9]{8}+[a-zA-Z]+$/",$_POST['dni'])){
            $errors[2] = 'Ingrese un Dni correcto';
        }else if($_POST['codigo_postal'] == ''or !preg_match("/^[0-9]{5}$/",$_POST['codigo_postal'])){
			$errors[3] = 'Ingrese un codigo postal correcto';
		}else{
			//si todo es correcto se hace el insert
        }
    }
	if ($errors[1]){
	
		echo "<script language='JavaScript'>"; 
		echo "alert('$errors[1]')";
		echo "</script>";
		
		echo "<script language='JavaScript'>"; 
		echo "window.self.location='registro.php'";
		echo "</script>";

		}else if($errors[2]){

		echo "<script language='JavaScript'>"; 
		echo "alert('$errors[2]')";
		echo "</script>";
		
		echo "<script language='JavaScript'>"; 
		echo "window.self.location='registro.php'";
		echo "</script>";
		
		}else if($errors[3]){

		echo "<script language='JavaScript'>"; 
		echo "alert('$errors[3]')";
		echo "</script>";
		
		echo "<script language='JavaScript'>"; 
		echo "window.self.location='registro.php'";
		echo "</script>";
		}
en cambio este funciona bien
Código:
<?php

$login = $_POST["login"];
$dni = $_POST["dni"];
$nombre = $_POST["nombre"];
$apellidos = $_POST["apellidos"];
$direccion = $_POST["direccion"];
$localidad = $_POST["localidad"];
$provincia = $_POST["provincia"];
$codigo_postal = $_POST["codigo_postal"];
$correo_electronico = $_POST["correo_electronico"];
$clave = $_POST["clave"];

$clave_enc=encriptaMD5($clave);

//echo $clave_enc;
//echo $login.$clave;

$sql_usuario="SELECT * FROM clientes WHERE Login='$login'";
$reg_usuario=mysql_query($sql_usuario);
$existe_usuario=mysql_num_rows($reg_usuario);
//echo $existe_usuario;

$sql_email="SELECT * FROM clientes WHERE Correo_Electronico='$correo_electronico'";
$reg_email=mysql_query($sql_email);
$existe_email=mysql_num_rows($reg_email);

	if (($existe_usuario==0) AND ($existe_email==0))
	{
	
		if (($login!="") AND ($clave!=""))
		{
		$query = "INSERT INTO clientes (Login, Dni, Nombre, Apellidos, Direccion, Localidad, Provincia, Codigo_Postal, Correo_Electronico, Clave) VALUES('$login','$dni','$nombre','$apellidos','$direccion','$localidad','$provincia','$codigo_postal','$correo_electronico','$clave_enc')";
		mysql_query($query);

			echo "<script language='JavaScript'>"; 
			echo "window.self.location='gracias.php'";
				echo "</script>";
		
		}
		else{
		
				
				echo "<script language='JavaScript'>"; 
		echo "alert('CAMPOS VACIOS.')";
		echo "</script>";
		
		echo "<script language='JavaScript'>"; 
		echo "window.self.location='registro.php'";
		echo "</script>";
		}
	}
	else{
	if ($existe_usuario==0)
	{
		echo "<script language='JavaScript'>"; 
		echo "alert('EMAIL YA EXISTE.')";
		echo "</script>";
		
		echo "<script language='JavaScript'>"; 
		echo "window.self.location='registro.php'";
		echo "</script>";
	}
	else{
		echo "<script language='JavaScript'>"; 
		echo "alert('USUARIO YA EXISTE.')";
		echo "</script>";
		
		echo "<script language='JavaScript'>"; 
		echo "window.self.location='registro.php'";
		echo "</script>";
	}
	//echo "existe";
	
	}
  #2 (permalink)  
Antiguo 15/06/2015, 09:35
 
Fecha de Ingreso: junio-2015
Ubicación: sevilla
Mensajes: 4
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: error formulario

bueno he dado con una solucion tras probar varias cosas, que igual no es la mejor solucion pero me sirve para que no me haga el insert con datos incorrectos

Código:
	if ($errors[1]){
	
		echo "<script language='JavaScript'>"; 
		echo "alert('$errors[1]')";
		echo "</script>";
		
		echo "<script language='JavaScript'>"; 
		echo "window.self.location='registro.php'";
		echo "</script>";
		break;
He puesto un break; y asi parar el proceso, que no digo que se pueda considerar una chapuza pero con mis conocimientos no doy con una solucion mejor.
  #3 (permalink)  
Antiguo 15/06/2015, 09:37
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: error formulario

Bienvenido a FDW.

Las variables $errors[1] y $errors[2] contienen valores y luego las evalúas solas, por lo que la única manera de que dichas condiciones no se cumplan es que ambas variables no estén definidas, posean un valor distinto a null, true, un array vacío o una cadena vacía, de otra manera, la alerta con el mensaje de error se seguirá mostrando ya que la primera condición se cumple.

En lugar de usar la sentencia break, controla tus procesos antes de ejecutar las condiciones. Por cierto, en el primer código que muestras, no veo que hagas una inserción.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #4 (permalink)  
Antiguo 15/06/2015, 16:20
 
Fecha de Ingreso: junio-2015
Ubicación: sevilla
Mensajes: 4
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: error formulario

Gracias

Es en el segundo donde veo si el usuario o el mail existen en la bd es donde hago el insert en la base de datos. En el primero donde hago el array, cuando da error sigue ejecutandoce el resto del codigo y en el segundo pues como el usuario y el email no existen me hace el insert aunque algunas de las comprobaciones del primero dé error. De lo que he probado lo unico que me a funcionado cuando da error la comprobacion si son validos el email, dni y codigo postal y cualquiera de ellos falla es usando el break.

Hace lo que tiene hacer correctamente y muestras los mensajes de error cuando existe el error solamente.

La primera parte comprendo mas o menos lo que me dices pero luego cuando me dices controlar los procesos antes de ejecutar la condicion para no tener que usar el break, aqui es cuando me pierdo. Perdona por mi falta de conocimiento pero es que por ahora hago mas las cosas por prueba y error mas que comprendiendo lo que estoy haciendo y de hay ese codigo tan...

Gracias por tu tiempo.
  #5 (permalink)  
Antiguo 15/06/2015, 21:47
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: error formulario

No sería necesario el break si en lugar de ejecutar la línea que redirige hacia registro.php, simplemente cerraras la condición.

Creo que vas a tener que replantear tus condiciones, porque no es correcto que si se va a mostrar un mensaje de error, luego pases a realizar la redirección hacia la página que procesará los datos.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #6 (permalink)  
Antiguo 19/06/2015, 07:43
 
Fecha de Ingreso: junio-2015
Ubicación: sevilla
Mensajes: 4
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: error formulario

Muchas gracias, segui tu consejo y ahora ya queda mas "elegante" por decirlo de algun modo jejeje

Etiquetas: formulario, funcion, php, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:36.