Validar campos en un arreglo

Iniciado por Zitros, 7 Marzo 2014, 19:07 PM

0 Miembros y 1 Visitante están viendo este tema.

Zitros

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:


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!.

dainodaibouken

por que no utilizas un while?   :rolleyes:

#!drvy

Código (php) [Seleccionar]
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 (php) [Seleccionar]
<?php

$movil 
'';
$oficina '9795555555';
$domicilio '972773443';


function 
validar_campos($datos){
   if(!
is_array($datos)){return false;}

   foreach(
$datos as $index=>$dato){
      if(empty(
$dato)){ unset($datos[$index]); }
   }

   if(empty(
$datos)){ return false; }
   else { return 
$datos; }
}

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

if(!
$nuevos_datos){ echo 'se requiere al menor un campo lleno'; }
else {
echo '<pre>';
print_r($nuevos_datos);
}


Resultado:
Código (php) [Seleccionar]
Array
(
    [oficina] => 9795555555
    [domicilio] => 972773443
)



Cita de: dainodaibouken en  7 Marzo 2014, 22:00 PM
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

Zitros

Muchas gracias   :laugh:!!. Me sirvió de mucho, me ayudo a validar esos campos y lo aplique de la siguiente manera


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>