Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/05/2013, 11:57
Avatar de guardarmicorreo
guardarmicorreo
 
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
compara mal dos datos uno por parámetro y el otro de un SELECT

Estoy haciendo un validador con objetos de php.

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
  1. <?php
  2.  
  3. //include ('clases.php');
  4.  
  5. class Validar extends Conectar
  6. {
  7.     private $arr = array();
  8.     private $salida = array();
  9.     public function datos_usuarios($usuarioc, $passwdc, $passwd2c, $emailc)
  10.     {
  11.         //consulto usuario, passwd y email de usuarios
  12.         $validacion="SELECT usuario, passwd, email FROM usuarios";
  13.         $result_conexion=Conectar::connect($validacion);
  14.        
  15.         //asigno los valores a un array con bucle while
  16.         while($validacion=mysql_fetch_array($result_conexion))
  17.         {
  18.             $this->arr=$validacion;
  19.         }
  20.        
  21.         //tengo dos usuarios en la base de datos, los datos introducidos manualmente en la BD son
  22.         //usuario = q; email = [email protected]; passwd = q; nombre = q.q; apellidos = q.q.q
  23.         //usuario = w; email = [email protected]; passwd = w; nombre = w.w; apellidos = w.w.w
  24.         //este var_dump(); devuelve lo siguiente:
  25.         //array(6) { [0]=> string(1) "w" ["usuario"]=> string(1) "w" [1]=> string(1)
  26.         // "w" ["passwd"]=> string(1) "w" [2]=> string(7) "[email protected]" ["email"]=> string(7) "[email protected]" }
  27.         var_dump($this->arr);
  28.        
  29.        
  30.        
  31.         //comparo los valores $usuario, $passwd y $email del usuario
  32.        
  33.         ////////////////////////////////////
  34.         //buscando coincidencias de usuario
  35.         ////////////////////////////////////
  36.         foreach($this->arr as $datos=>$usuario)
  37.         {
  38.             //aquí está el primer problema, se cumpla o no la condición siempre va al else
  39.             if($usuarioc == $datos)
  40.             {
  41.                 $this->salida['usuario'] = "El usuario ya existe <br>";
  42.             }
  43.             else
  44.             {
  45.                 $this->salida['usuario'] = "Usuario correcto <br>";
  46.             }
  47.         }
  48.        
  49.         //////////////////////////////////
  50.         //buscando coincidencias de email
  51.         //////////////////////////////////     
  52.         foreach($this->arr as $datos=>$email)
  53.         {
  54.             //aquí está el segundo problema, se cumpla o no la condición siempre va al else
  55.             if($emailc == $datos)
  56.             {
  57.                 $this->salida['email'] = "El E-mail ya existe <br>";
  58.             }
  59.             else
  60.             {
  61.                 $this->salida['email'] = "E-mail es correcto <br>";
  62.             }
  63.         }
  64.         //las contraseñas sí las valida bien
  65.  
  66.         ///////////////////////////
  67.         //validando la contraseña
  68.         ///////////////////////////
  69.        
  70.         //si $passwd y $passwd2 no coinciden
  71.         if($passwdc != $passwd2c)
  72.         {
  73.             $this->salida['passwd'] = "Las contraseñas no coinciden <br>";
  74.         }
  75.         else
  76.         {
  77.             $this->salida['passwd'] = "Contraseñas iguales <br>";
  78.         }
  79.        
  80.         //si la contraseña es insegura (inferior a 6 caracteres)
  81.         if(strlen($passwdc) < 6)
  82.         {
  83.             $this->salida['passwd2'] = "La contraseña tiene menos de 6 caracteres <br>";
  84.         }
  85.         else
  86.         {
  87.             $this->salida['passwd2'] = "La contraseña tiene más de 6 caracteres <br>";
  88.         }
  89.        
  90.         ////////////////////////////
  91.         //devuelve el array
  92.         ////////////////////////////
  93.         return $this->salida;
  94.     }
  95. }
  96.  
  97. ?>

el resultado de esto es



Usuario correcto
E-mail es correcto
Contraseñas iguales
La contraseña tiene más de 6 caracteres