Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Zitros en 7 Marzo 2014, 19:07 pm



Título: Validar campos en un arreglo
Publicado por: Zitros en 7 Marzo 2014, 19:07 pm
Tengan ustedes un buen día!

Estoy realizando un formulario donde estoy validando los campos texto que no estén vacíos. Pero hay una excepción, en el formulario están los campos de Teléfono del Domicilio, El móvil y el de Oficina.

Realmente quiero que si no digitan todos los campos de telefono, movil y oficina que por lo menos requiera uno de esos campos.

Pensé en la lógica que podría contener para dicha validación:

Código:
un for ( que recorra el arreglo){
       comprobado si cada uno de esos campos esta vacio
       si movil = vacio //pasa al siguiente
       si oficina= vacio// pasa al siguiente
      si domicilio = vacio
     despliega error ='se requiere al menor un campo lleno'
}
 
En caso contrario

   si movil !empty es diferente de vacio // entonces para el ciclo y no despliega error.

Me gustaria saber si estoy pensando bien la lógica para comprobar si por lo menos existe algún dato lleno de este arreglo.

Muchas Gracias!.


Título: Re: Validar campos en un arreglo
Publicado por: dainodaibouken en 7 Marzo 2014, 22:00 pm
por que no utilizas un while?   :rolleyes:


Título: Re: Validar campos en un arreglo
Publicado por: #!drvy en 7 Marzo 2014, 22:30 pm
Código
  1. if(!isset($movil,$oficina,$domicilio)){ echo 'Se requiere al menor un campo lleno'; }

Si quieres puedes hacer una funcion que devuelva solo los campos que están rellenos.

Código
  1. <?php
  2.  
  3. $movil = '';
  4. $oficina = '9795555555';
  5. $domicilio = '972773443';
  6.  
  7.  
  8. function validar_campos($datos){
  9.   if(!is_array($datos)){return false;}
  10.  
  11.   foreach($datos as $index=>$dato){
  12.      if(empty($dato)){ unset($datos[$index]); }
  13.   }
  14.  
  15.   if(empty($datos)){ return false; }
  16.   else { return $datos; }
  17. }
  18.  
  19. $datos = array('movil'=>$movil,'oficina'=>$oficina,'domicilio'=>$domicilio);
  20. $nuevos_datos = validar_campos($datos);
  21.  
  22. if(!$nuevos_datos){ echo 'se requiere al menor un campo lleno'; }
  23. else {
  24. echo '<pre>';
  25. print_r($nuevos_datos);
  26. }

Resultado:
Código
  1. (
  2.    [oficina] => 9795555555
  3.    [domicilio] => 972773443
  4. )


por que no utilizas un while?   :rolleyes:

Siempre que puedas evita usar while. while es para casos en los que no se conoce cuando hay que detener el bucle. Si conoces ese dato, siempre es mejor usar for y foreach ya que son mucho mas rápidos.

Saludos


Título: Re: Validar campos en un arreglo
Publicado por: Zitros en 8 Marzo 2014, 18:18 pm
Muchas gracias   :laugh:!!. Me sirvió de mucho, me ayudo a validar esos campos y lo aplique de la siguiente manera
Código:

if(isset($_POST['domicilio'],$_POST['movil'],$_POST['oficina']))
{
  $movil = $_POST['domicilio'];
  $oficina = $_POST['movil'];
  $domicilio = $_POST['oficina'];

$errors = array();
$datos = array('movil'=>$movil,'oficina'=>$oficina,'domicilio'=>$domicilio);
$nuevos_datos = validar_campos($datos);

if(!$nuevos_datos){ $errors[] = '<li>Se requiere al menos un teléfono para contactarlo</li>'; }

if(!empty($errors)){
foreach ($errors as $error){
echo $error, '<br />';

}else{
insertar($domicilio, $movil,$oficina);
header('Location: paginaprincipal.php');
exit();
}

<form method="post" action="" name="frmprueba">
Telefono Domicilio:<input type="text" name="domicilio" />
Telefono Movil:<input type="text" name="movil"/>
Telefono Oficina:<input type="text" name="oficina"/>
<input type="submit" value="Validar"/>

</form>