Foros del Web » Programando para Internet » PHP »

empty multiple

Estas en el tema de empty multiple en el foro de PHP en Foros del Web. hola: es posible resumir de alguna forma este script sin cambiar su logica? Código PHP: if((empty( $msj1 )) && (empty( $msj2 )) && (empty( $msj3 )) && (empty( $msj4 ))&& (empty( $msj5 ...
  #1 (permalink)  
Antiguo 07/05/2004, 13:39
 
Fecha de Ingreso: febrero-2004
Mensajes: 35
Antigüedad: 13 años, 9 meses
Puntos: 0
empty multiple

hola:
es posible resumir de alguna forma este script sin cambiar su logica?

Código PHP:
if((empty($msj1)) && (empty($msj2)) && (empty($msj3)) && (empty($msj4))&& (empty($msj5))&& (empty($msj6))&& (empty($msj7))&& (empty($msj8))&&(empty($msj9))){
$miformu "nombre_formulario";

lo ocupo para una validacion...pero pienso hacer una validacion del mismo tipo con muchas más variables y eso significa un script demasiado larrrgo..

¿existe algo asi como un empty multiple ?
¿o talvez un array...?
gracias..

PD: por favor si alguien me pude contestar ese otro posteo


validacion y posteo

me tiene bastante complicado

gracias

topito
  #2 (permalink)  
Antiguo 10/05/2004, 12:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Puedes usar arrays para contener el nombre de tus variables y aplicar "Variables Variables".

Si todo esto lo llevas a una función .. ya tendrás tu objetivo. Recuerda que si bien PHP es muy rico en funciones .. no todo está inventado o al gusto de uno, así que siempre puedes diseñarte tus própias funciones e ir creandote tu própia biblioteca de funciones própias y tal vez hasta migrarlo hacia OOP en una classe con otras funcioenes (métodos) del mismo grúpo.

Código PHP:
<?

function empty_multiple($array_variables){
$errores_contador=0;
foreach (
$array_variables as $variable){
    if (
empyt(${$variable}){
       
$errores_contador++;
    }
}

    if (
$errores_contador == count($array_variables)){
        return 
TRUE;
    } else {
        return 
FALSE;
}

}


// ejemplo uso:
$array_variables=array('msg1','msg2','etc');
if (
empty_multiple($array_variables)){
    
$miformu "nombre_formulario";
}

?>
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 10/05/2004, 12:57
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Ops! .. ahora que veo el ejemplo .. con la función habría un pequeño problema de ambito de las variables (a no ser globales ni declaradas como tal) en la función ...

No sé si se podrá hacer algo tipo:

GLOBAL ${$variable};

En el bucle foreach() ... Si lo prueban o tienen una mejor solución .. avisen.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 10/05/2004, 13:46
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Hola,

En http://www.php.net/manual/en/languag...bles.scope.php indica que existe el array superglobal $GLOBALS para acceder a las variables del ambito global. Asi que usas los valores como indice del array.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 10/05/2004, 16:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Okis Josemi .. pues entonces quedaría algo así:

Código PHP:
<?

function empty_multiple($array_variables){
   
$errores_contador=0;
   foreach (
$array_variables as $variable){
      if (empty(
$GLOBALS[$variable]){
       
$errores_contador++;
     }
   }

   if (
$errores_contador == count($array_variables)){
        return 
TRUE;
   } else {
        return 
FALSE;
   }

}


// ejemplo uso:
$array_variables=array('msg1','msg2','etc');
if (
empty_multiple($array_variables)){
    
$miformu "nombre_formulario";
}

?>
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 12/05/2004, 12:04
 
Fecha de Ingreso: febrero-2004
Mensajes: 35
Antigüedad: 13 años, 9 meses
Puntos: 0
como siempre muy agradecido....espero luego poder aportar a este foro.
Probaré las solucuones q me proponen y les cuento..

Topito
  #7 (permalink)  
Antiguo 11/06/2004, 09:43
 
Fecha de Ingreso: febrero-2004
Mensajes: 35
Antigüedad: 13 años, 9 meses
Puntos: 0
despues de buscar distinas soluciones

Esto era mas simple de lo que pensaba...

en mi caso particular de hacer un empty a multiples variables. como la siguiente:

Código PHP:
if((empty($msj1)) && (empty($msj2)) && (empty($msj3)) && (empty($msj4))&& (empty($msj5))&& (empty($msj6))&& (empty($msj7))&& (empty($msj8))&&(empty($msj9))){ 
$miformu "nombre_formulario"
}; 
la solucion era:

Código PHP:
$msjs $msj1 $msj2 $msj3 $msj4 $msj9 ;
if(empty(
$msjs)){
$miformu "nombre_formulario";

no se como no se me ocurrio antes¡¡¡

Muchas gracias por sus respuestas
  #8 (permalink)  
Antiguo 11/06/2004, 10:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. la solución que has dado para tu caso particular es "original" y efectiva.

Pero .. si tomaste nota del ejemplo de recorrer los arrays y demás .. la anterior función algo modificada te serviría no sólo para dar un "true" "false" general sino para indicar -cual- de esas variables es la que está vacia (o no cumple tu condición en generla) para devolver errores más personalizados y detallados ..

Un saludo,
  #9 (permalink)  
Antiguo 11/06/2004, 22:15
 
Fecha de Ingreso: febrero-2004
Mensajes: 35
Antigüedad: 13 años, 9 meses
Puntos: 0
Lo cierto es que si.
Pero esta vez le di mas importancia a un codigo resumido y efectivo porque la idea era esa, osea el hacer un codigo que me permitiera repetir lo menos q pudiera un empty y en definitiva poco de todo, porque la verdad que cada vez que debo validar un formulario la tarea termina siendo eterna.

Pero me es interesante la opcion q tu me presentaste y me gustaria personalizarla (de hecho la he usado) pero no entiendo eso de la variables GLOBALES ¿cual es la funcion que esta cumpliendo el $_GLOBAL alli?

Agradecido nuevamente
Topito
  #10 (permalink)  
Antiguo 14/06/2004, 07:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
$GLOBALS te permite acceder a cualquier variable externa a una función sin necesidad de tener que declararla -una a una- con global (el link que dejó Josemi lo tienes detallado: es el manual oficial de PHP)

Un saudo,
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 21:37.