Foros del Web » Programando para Internet » PHP »

Problema validando datos mediante PHP

Estas en el tema de Problema validando datos mediante PHP en el foro de PHP en Foros del Web. Hola, Llevo más de una hora dándole vueltas al tema y no consigo ver como lo puedo plantear. Tengo un formulario en el que se ...
  #1 (permalink)  
Antiguo 17/04/2012, 05:38
Avatar de JaimeMSE  
Fecha de Ingreso: diciembre-2010
Ubicación: Isla Cristina (Huelva)
Mensajes: 164
Antigüedad: 10 años, 4 meses
Puntos: 7
Problema validando datos mediante PHP

Hola,

Llevo más de una hora dándole vueltas al tema y no consigo ver como lo puedo plantear.

Tengo un formulario en el que se especifican varias cosas que requieren algunas números, algunas letras, otras ambas, etc.

Por ejemplo, tengo dos campos:

Llamémosle campo1 y campo2. El campo1 es un checkbox, que si no está seleccionado debería mandar 0. Por tanto, para validar el campo1 debería de:

Código PHP:
Ver original
  1. function validarCampo1($campo1) {
  2.    
  3.     if(strlen($campo1) > 1) {
  4.         return false;
  5.     }
  6.    
  7.     elseif(!preg_match("/^[0-1]+$/", $campo1)) {
  8.         return false;
  9.     }
  10.    
  11.     else {
  12.         return true;
  13.     }
  14.    
  15. }

Eso lo tengo en un archivo llamado validaciones.php, luego lo llamo así:

Código PHP:
Ver original
  1. if(isset($enviar)) {
  2.                 if(!validarCampo1($campo1)) {
  3.                     $campo1 = "error";
  4.                 }

Luego compruebo que no existan errores:

Código PHP:
Ver original
  1. if($campo1 != "error" && $campo2 != "error"...

El problema tengo en que, en el campo1 que es un checkbox, se queda la variable en error en vez de poner un 0 si no se selecciona. ¿A qué se puede deber?

Luego he pensado en poner en el campo2 que sería letras+números algo así:

Código PHP:
Ver original
  1. function validar campo2 ($campo2) {
  2.    
  3.     if(isset($campo2 )) {
  4.    
  5.         if(!preg_match("/^[0-1]+$/", $campo2 )) {
  6.             return false;
  7.         }
  8.        
  9.         else {
  10.             return true;
  11.         }
  12.     }
  13.    
  14.     else {
  15.         $campo2  = '';
  16.     }
  17. }

El problema es que el campo2 puede estar vacío. Pero no sé como hacer que si los carácteres que ha introducido no son correctos, salga error, y si se queda vacía, no se inserte en la base de datos, o sea, se inserte en blanco.

Gracias y perdón por el tostón de texto.
__________________
@JaimeMSE - ¡Sígueme!
  #2 (permalink)  
Antiguo 17/04/2012, 05:58
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 11 años, 9 meses
Puntos: 66
Respuesta: Problema validando datos mediante PHP

No se si entendí bien tu pregunta pero;

si $campo1 solo puede tener 2 valores 1 ó 0 porqué no haces:

if($campo1==1)
proceso....
else
proceso...
saludos,
__________________
Tu álbum de cromos online!!
  #3 (permalink)  
Antiguo 17/04/2012, 06:06
Avatar de JaimeMSE  
Fecha de Ingreso: diciembre-2010
Ubicación: Isla Cristina (Huelva)
Mensajes: 164
Antigüedad: 10 años, 4 meses
Puntos: 7
Respuesta: Problema validando datos mediante PHP

La verdad es que no lo había pensado.

Podría hacer:

Código PHP:
Ver original
  1. if($campo1 == 1) { $campo1='1' } else { $campo1='0' }

Gracias, Santris, pero para el campo2 que me recomiendas? Ya que ese campo puede estar correcto, incorrecto (que pongan caracteres raros) o vacío.

Gracias de nuevo.
__________________
@JaimeMSE - ¡Sígueme!
  #4 (permalink)  
Antiguo 17/04/2012, 06:13
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 12 años, 8 meses
Puntos: 139
Respuesta: Problema validando datos mediante PHP

Los campos de tipo checkbox solo están definidos sin los activas en el formulario de lo contrario son invisibles para el script.

para comprobar un checkbox deberias de verificar si estan definidos.
Código PHP:
Ver original
  1. # De esta manera si activas el checkbox la variable campo1 estaria definida
  2. if ( isset($campo1) ) {
  3.  
  4. # do something..
  5.  
  6. } else {
  7.  
  8. # do something..
  9.  
  10. }

Saludos.
  #5 (permalink)  
Antiguo 17/04/2012, 06:16
Avatar de JaimeMSE  
Fecha de Ingreso: diciembre-2010
Ubicación: Isla Cristina (Huelva)
Mensajes: 164
Antigüedad: 10 años, 4 meses
Puntos: 7
Respuesta: Problema validando datos mediante PHP

Gracias por molestarte gjx2, pero ya lo había solucionado, igualmente gracias.

El problema ahora lo tengo con el campo2, que es un input type="text" y tiene, como he dicho, tres estados:

correcto, incorrecto (que pongan caracteres raros) o vacío.
__________________
@JaimeMSE - ¡Sígueme!
  #6 (permalink)  
Antiguo 17/04/2012, 06:27
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 12 años, 8 meses
Puntos: 139
Respuesta: Problema validando datos mediante PHP

Puedes hacer uso de isset y strpos


Ej.

Código PHP:
Ver original
  1. if (isset($campo2)) {
  2.  
  3. $cadena = "correcto,incorrecto";
  4. $buscar = $campo2;
  5. $resultado = strpos($cadena, $buscar);
  6.  
  7.   if ($resultado !== FALSE) {
  8.        echo "Encontrado";
  9.   }
  10.  
  11. }
  #7 (permalink)  
Antiguo 17/04/2012, 06:40
Avatar de JaimeMSE  
Fecha de Ingreso: diciembre-2010
Ubicación: Isla Cristina (Huelva)
Mensajes: 164
Antigüedad: 10 años, 4 meses
Puntos: 7
Respuesta: Problema validando datos mediante PHP

Lo siento pero no entiendo como lo puedo integrar en:

Código PHP:
Ver original
  1. function validarMicrochip($microchip) {
  2.    
  3.     if(strlen($microchip) > 20) {
  4.         return false;
  5.     }
  6.    
  7.     elseif(!preg_match("/^[0-9a-zA-Z]+$/", $microchip)) {
  8.         return false;
  9.     }
  10.    
  11.     else {
  12.         return true;
  13.     }
  14. }

Lo que necesito es que:

Si es correcto, que se guarde ese valor en una variable.
Si no es correcto, que salte un error (mismo con un echo) de que ese campo es incorrecto.
Si está vacío, que se inserte NULL en la DB.
__________________
@JaimeMSE - ¡Sígueme!
  #8 (permalink)  
Antiguo 17/04/2012, 06:58
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 12 años, 8 meses
Puntos: 139
Respuesta: Problema validando datos mediante PHP

En tu caso vamos a validar solo dos estados no creo necesario utilizar expresiones regulares con un simple if seria suficiente.

la idea podria ser esta.


Código PHP:
Ver original
  1. $Campo1 = "correcto";
  2.  
  3. # paso el valor a minuscula para evitar error en caso de que el usuario haya el valor correcto pero en mayuscula.
  4.            
  5. $Campo1 = strtolower($Campo1);
  6.  
  7.     #Compruebo que la variable este definida y que no este vacia.
  8.     if ( (isset($Campo1)) && (!empty($Campo1)) ) {
  9.    
  10.         #Verifico si no estan mis dos valores permitidos
  11.        if ( ($Campo1 != 'correcto') || ($Campo1 != 'incorrecto') )
  12.        {
  13.                   echo 'Este Campo no es valido para ser ejecutado!';                        
  14.        }
  15.    
  16.     } else {
  17.  
  18.            
  19.             $Campo1 = '';
  20.                 echo 'El campo Esta vacio';
  21.            
  22.     }

Saludos.
  #9 (permalink)  
Antiguo 17/04/2012, 07:44
Avatar de JaimeMSE  
Fecha de Ingreso: diciembre-2010
Ubicación: Isla Cristina (Huelva)
Mensajes: 164
Antigüedad: 10 años, 4 meses
Puntos: 7
Respuesta: Problema validando datos mediante PHP

Si es necesario utilizar expresiones regulares, ya que tengo que comprobar que en el campo2 solo se puedan poner letras y números y como máximo un tamaño de 20.

Creo que te has confundido.
__________________
@JaimeMSE - ¡Sígueme!
  #10 (permalink)  
Antiguo 17/04/2012, 08:05
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 12 años, 8 meses
Puntos: 139
Respuesta: Problema validando datos mediante PHP

Perdon mala mia


Código PHP:
Ver original
  1. $microchip = "Hola Mundo";
  2.        
  3.        
  4. if ((isset($microchip))  && (!empty($microchip)) && (strlen($microchip) > 20 ) ) {
  5.        
  6.        
  7.      if(!preg_match("/^[0-9a-zA-Z\s]+$/", $microchip,$value)) {
  8.            
  9.             echo "Valores Invalidos";
  10.     }
  11.    
  12.     else {
  13.        
  14.         $valor_nuevo = $value[0];
  15.         echo $valor_nuevo;
  16.     }  
  17.        
  18.        
  19.     } else {
  20.        
  21.         echo "Variable vacia";  
  22.     }

Etiquetas: formulario, validador
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 07:33.