Foros del Web » Programando para Internet » PHP »

Problema con validación

Estas en el tema de Problema con validación en el foro de PHP en Foros del Web. Buen dia a todos por aqui, tengo el siguiente codigo con el cual quiero validar un arreglo que tiene varias variables y las valido que ...
  #1 (permalink)  
Antiguo 29/01/2013, 22:00
 
Fecha de Ingreso: noviembre-2011
Ubicación: Paris
Mensajes: 450
Antigüedad: 12 años, 5 meses
Puntos: 7
Problema con validación

Buen dia a todos por aqui, tengo el siguiente codigo con el cual quiero validar un arreglo que tiene varias variables y las valido que no estén vacías pero no lo consigo espero me echen una mano por favor.

Código PHP:

 
function valida($name){  
         if(
strlen($name) < 4){ return false;}
             elseif(!
preg_match("/^[a-zA-Z]+$/"$name)) { return false; }
                 else {return 
true;}
    }  
    
    
$ec="";

    
    
$array = array(=> ""=> "jesus"=> "pedro"=> "pablo");
    
$c=count($array);
    for(
$x=0;$x>$c;$x++){
    
    if(
valida($array[$x])==true){ echo 'Hay un campo vacio'; } 
    } 
  #2 (permalink)  
Antiguo 29/01/2013, 22:24
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Problema con validación

Estás recorriendo mal el array, en vez de $x>$c debe ser $x<$c y estás comparando mal en el condicional en vez de true, debería ser false. Usa un foreach mejor.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #3 (permalink)  
Antiguo 29/01/2013, 22:29
 
Fecha de Ingreso: noviembre-2011
Ubicación: Paris
Mensajes: 450
Antigüedad: 12 años, 5 meses
Puntos: 7
Respuesta: Problema con validación

Gracias maestro sos un capo!
  #4 (permalink)  
Antiguo 29/01/2013, 22:30
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema con validación

Para no complicarte, usa foreach, en lugar de for; aparte, la comparación está al revés:

Código PHP:
Ver original
  1. function valida($name){  
  2.         if(strlen($name) < 4) {
  3.              return false;
  4.         } else if(!preg_match("/^[a-zA-Z]+$/", $name)) {
  5.              return false;
  6.         }
  7.         return true;
  8. }
  9.  
  10. $array = array(0 => "", 1 => "jesus", 2 => "pedro", 3 => "pablo");
  11. foreach($array as $nombre) {
  12.      // valida($nombre) es lo mismo que valida($nombre) == true
  13.      // !valida($nombre) es lo mismo que valida($nombre) == false
  14.      if( !valida($nombre)) {
  15.          echo 'Hay un campo vacío';
  16.      }
  17. }

Ups, me tardé mucho en responder!
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 29/01/2013, 22:33
 
Fecha de Ingreso: noviembre-2011
Ubicación: Paris
Mensajes: 450
Antigüedad: 12 años, 5 meses
Puntos: 7
Respuesta: Problema con validación

Gracias a ambos por la ayuda, y no os precupeis que lo que importa es que me echaste una mano.
Salud!
  #6 (permalink)  
Antiguo 29/01/2013, 22:37
 
Fecha de Ingreso: noviembre-2011
Ubicación: Paris
Mensajes: 450
Antigüedad: 12 años, 5 meses
Puntos: 7
Respuesta: Problema con validación

Solo quisiera saber algo ya por ultimo, como puedo imprimir el numero que esta vacio?
  #7 (permalink)  
Antiguo 29/01/2013, 23:06
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema con validación

Código PHP:
Ver original
  1. foreach($array as $numero => $nombre) {
  2.     // Si la comparación falla, imprimes $numero
  3. }
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: variables
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 19:17.