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!.
por que no utilizas un while? :rolleyes:
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.
<?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:
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
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>