he creado un documento con una clase que recibe los parámetros que quiero validar de dicho formulario.
al comparar los datos por parámetro y los datos extraídos por SELECT a mysql
siempre obtengo que la comparación es válida, tanto si los parámetros ya existen en la consulta como si no, siempre es válida.
puse en el objeto un var_dump();
me devuelve solo los datos de un usuario cuando en realidad tengo dos usuarios.
en el código muestro lo que devuelve el var_dump();
no logro entender por qué, si alguien es tan amable de ayudarme, muchas gracias.
este es mi código, escrito por mi.
Código Java:
Ver original
<?php //include ('clases.php'); class Validar extends Conectar { private $arr = array(); private $salida = array(); public function datos_usuarios($usuarioc, $passwdc, $passwd2c, $emailc) { //consulto usuario, passwd y email de usuarios $validacion="SELECT usuario, passwd, email FROM usuarios"; $result_conexion=Conectar::connect($validacion); //asigno los valores a un array con bucle while while($validacion=mysql_fetch_array($result_conexion)) { $this->arr=$validacion; } //tengo dos usuarios en la base de datos, los datos introducidos manualmente en la BD son //usuario = q; email = [email protected]; passwd = q; nombre = q.q; apellidos = q.q.q //usuario = w; email = [email protected]; passwd = w; nombre = w.w; apellidos = w.w.w //este var_dump(); devuelve lo siguiente: //array(6) { [0]=> string(1) "w" ["usuario"]=> string(1) "w" [1]=> string(1) // "w" ["passwd"]=> string(1) "w" [2]=> string(7) "[email protected]" ["email"]=> string(7) "[email protected]" } var_dump($this->arr); //comparo los valores $usuario, $passwd y $email del usuario //////////////////////////////////// //buscando coincidencias de usuario //////////////////////////////////// foreach($this->arr as $datos=>$usuario) { //aquí está el primer problema, se cumpla o no la condición siempre va al else if($usuarioc == $datos) { $this->salida['usuario'] = "El usuario ya existe <br>"; } else { $this->salida['usuario'] = "Usuario correcto <br>"; } } ////////////////////////////////// //buscando coincidencias de email ////////////////////////////////// foreach($this->arr as $datos=>$email) { //aquí está el segundo problema, se cumpla o no la condición siempre va al else if($emailc == $datos) { $this->salida['email'] = "El E-mail ya existe <br>"; } else { $this->salida['email'] = "E-mail es correcto <br>"; } } //las contraseñas sí las valida bien /////////////////////////// //validando la contraseña /////////////////////////// //si $passwd y $passwd2 no coinciden if($passwdc != $passwd2c) { $this->salida['passwd'] = "Las contraseñas no coinciden <br>"; } else { $this->salida['passwd'] = "Contraseñas iguales <br>"; } //si la contraseña es insegura (inferior a 6 caracteres) if(strlen($passwdc) < 6) { $this->salida['passwd2'] = "La contraseña tiene menos de 6 caracteres <br>"; } else { $this->salida['passwd2'] = "La contraseña tiene más de 6 caracteres <br>"; } //////////////////////////// //devuelve el array //////////////////////////// return $this->salida; } } ?>
el resultado de esto es
Usuario correcto
E-mail es correcto
Contraseñas iguales
La contraseña tiene más de 6 caracteres