Foros del Web » Programando para Internet » PHP »

Problema de lógica de condicionales

Estas en el tema de Problema de lógica de condicionales en el foro de PHP en Foros del Web. Bueno pues tengo un problema y ando como que bloqueado, por que se que puede ser facil pero no puedo a ver. mando 3 variables ...
  #1 (permalink)  
Antiguo 15/06/2011, 11:31
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 4 meses
Puntos: 641
Problema de lógica de condicionales

Bueno pues tengo un problema y ando como que bloqueado, por que se que puede ser facil pero no puedo a ver.

mando 3 variables por un form pero pueden o no estar cada una de ellas, pueden estar todas o ninguna, entonces dependiendo de los casos hago esto:

Código PHP:
Ver original
  1. <?php
  2. if(isset($_POST['var1'])){
  3.     //codigo largo
  4. }else if(isset($_POST['var2'])){
  5.     //codigo largo
  6. }else if(isset($_POST['var3'])){
  7.     //codigo largo
  8. }else if(isset($_POST['var1']) && isset($_POST['var2'])){
  9.     //codigo largo
  10. }else if(isset($_POST['var1']) && isset($_POST['var3'])){
  11.     //codigo largo
  12. }elseif(isset($_POST['var2']) && isset($_POST['var3'])){
  13.     //codigo largo
  14. }else{
  15.     //codigo largo
  16. }?>

o sea un asco de código el que he puesto.

mi pregunta es:

¿cual es la mejor forma de simplificar este bodrio?

gracias por au ayuda
  #2 (permalink)  
Antiguo 15/06/2011, 11:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Problema de lógica de condicionales

El problema es que con lo que expones es muy poca información como para saber bien que es lo que hace tu flujo y como lo podrías optimizar.

Si estas repitiendo mucho de tu código lo mejor sería que hicieras una función para las tareas comunes así puedes hacer más mantenible tu código.
  #3 (permalink)  
Antiguo 15/06/2011, 11:50
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 4 meses
Puntos: 641
Respuesta: Problema de lógica de condicionales

pues lo único que hago con ese código es comprobar

si existe la primera variable

o si existe la segunda

o si existe la tercera

o si existe la primera y segunda

o si existe la primera y tercera

o si existe la segunda y tercera

pero tambein falta si son los 3 o solo la segunda o solo la tercera


que son todas las posibles combinaciones en que pueden llegar esas variables.

mi dilema es saber si existe una forma más simple de hacerlo.

existiendo cada una de esas opciones hacen algo muy similar pero no igual. por lo que una función no me sirve.

gracias


Bueno a ver la pregunta más facil sería

¿como harias tu eso?

comprobar que llegan las variables de 3 inputs con un checkbox que los habilitan y deshabilitan pudiendo ser 1,2,3 ninguno, solo el 1, solo el 2, solo el 3, el 1 y 2 el 1 y 3, el 2 y el 3 o los 3
  #4 (permalink)  
Antiguo 15/06/2011, 12:08
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Problema de lógica de condicionales

Si son checkbox lo pondría en un array, y así solo obtendría los seleccionados y puedo sacar el valor directamente (ya que el browser solamente te envía los seleccionados).
  #5 (permalink)  
Antiguo 15/06/2011, 12:17
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 4 meses
Puntos: 641
Respuesta: Problema de lógica de condicionales

en realidad no lo hago asi

¿sería mucha molestia si ves la página que te digo?

http://manganimemas.com/manganimemas...arga/one-piece

es donde dice imágenes, asi me entenderán y disculpen la molestia.
  #6 (permalink)  
Antiguo 15/06/2011, 12:47
 
Fecha de Ingreso: abril-2009
Ubicación: en un lugar de la mancha
Mensajes: 236
Antigüedad: 15 años, 6 meses
Puntos: 38
Respuesta: Problema de lógica de condicionales

estuve viendo tu pagina y creo ke son los checkbox no ??

bueno si es asi pues puedes recoger la informacin en un array de esta forma.

En tu formulario.
Código HTML:
<input type="checkbox" name="img[]" value="a" />
<input type="checkbox" name="img[]" value="b" />
<input type="checkbox" name="img[]" value="c" /> 
En tu script de PHP.
Código PHP:
$img "";
if (
$img==!NULL){
   foreach(
$img as $value){
   
$img .= $value;
   }
}

// Validar el valor ke paso el formulario.
if(strstr($img"a"))
   echo 
"1er checkbox seleccionado.<br>";
if(
strstr($img"b"))
   echo  
"2do checkbox seleccionado.<br>";
if(
strstr($img"c"))
   echo  
"3er checkbox seleccionado.<br>"

PD: No se si sera la mejor o no, pero se me ocurrio asi, a lo mejor alguien ha pasado por esta situacion y tiene una mejor o no se, espero ke te ayude por lo menos a encontrar alguna otra.
  #7 (permalink)  
Antiguo 15/06/2011, 12:56
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 4 meses
Puntos: 641
Respuesta: Problema de lógica de condicionales

muchas gracias amigo, pero lo que hacen los checkbox es habilitar los inputs de las imágenes :D
lo que quiero comprobar si existe es el $_FILE['upload1'], 2 y 3, con el código que puse primero lo puedo lograr pero se me hace que es exageradamente largo.
  #8 (permalink)  
Antiguo 15/06/2011, 13:19
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 9 meses
Puntos: 58
Respuesta: Problema de lógica de condicionales

Si el código para cada opción es tan distinto que no lo puedas simplificar en una función, no creo que tengas maneras mejores de hacerlo. Lo que me extraña es que el código sea tan diferente como dices porque se trata del mismo elemento, una imagen. En todo caso sería diferente si se manda una, dos o tres imágenes, pero ¿que diferencia puede haber en el código si se manda, por ejemplo, la primera o la segunda imagen?
  #9 (permalink)  
Antiguo 15/06/2011, 13:26
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 4 meses
Puntos: 641
Respuesta: Problema de lógica de condicionales

bueno si no hay de otra, tendré que hacer lo de la función. Aunque mi objetivo era otro.

supongo que todo puede hacerse "funcionable" jajaja
  #10 (permalink)  
Antiguo 15/06/2011, 13:37
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 8 meses
Puntos: 336
Respuesta: Problema de lógica de condicionales

a ver, te explico amigo memoadian, si te das cuenta en tu código si yo ingreso la primera variable, entraré en el primer if

if(isset($_POST['var1'])){

ya que la var1 esta definida

por otro lado si ingreso la primera y segunda variable entrare en el primer if tambien

if(isset($_POST['var1'])){

ya que la var 1 esta definida

si ingreso la primera y la tercera variable tambien entrare en el primer if, por último si ingreso las 3 variables... tambien entro al primer if, ya que la var1 esta seleccionada

por lo tanto, se puede entrar al primer, segundo y tercer if, JAMAS a los siguientes

la solución es bastante simple, solo invierte el orden de los ifs, algo así:

Código PHP:
Ver original
  1. <?php
  2.  
  3. if(isset($_POST['var1']) and isset($_POST['var2']) and isset($_POST['var3'])){
  4.     //codigo largo
  5. }else if(isset($_POST['var1']) && isset($_POST['var2'])){ // se ha ingresado var1 y var2 no var3
  6.     //codigo largo
  7. }else if(isset($_POST['var1']) && isset($_POST['var3'])){
  8.     //codigo largo
  9. }elseif(isset($_POST['var2']) && isset($_POST['var3'])){
  10.     //codigo largo
  11. }else if(isset($_POST['var1'])){ //solo se ha ingresado var1 ninguna otra
  12.     //codigo largo
  13. }else if(isset($_POST['var2'])){
  14.     //codigo largo
  15. }else if(isset($_POST['var3'])){
  16.     //codigo largo
  17. }else{ // no se ha ingresado ninguna
  18.     //codigo largo
  19. }?>
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #11 (permalink)  
Antiguo 15/06/2011, 13:47
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 4 meses
Puntos: 641
Respuesta: Problema de lógica de condicionales

Pues tienes mucha razón, jaja ando muy bestia, aunque no he probado ese código que puse,

buscaba una forma de simplificarlo, de todos modos muchisimas gracias
  #12 (permalink)  
Antiguo 15/06/2011, 13:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Problema de lógica de condicionales

Sigo insistiendo que lo mejor sería un array, nombra tus inputs de esta forma:
Código HTML:
Ver original
  1. <input type="file" name="imagenes[]" />
  2. <input type="file" name="imagenes[]" />
  3. <input type="file" name="imagenes[]" />

Así puedes tener tantos inputs como quieras, luego verifica que datos te devuelve:
Código PHP:
Ver original
  1. <?php
  2. var_dump($_FILES);

Puedes ver que va a ser un array de arrays, y con eso podrías procesar cada imagen por su cuenta.

Saludos.
  #13 (permalink)  
Antiguo 15/06/2011, 14:14
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 4 meses
Puntos: 641
Respuesta: Problema de lógica de condicionales

ok lo intentaré de ese modo.
  #14 (permalink)  
Antiguo 15/06/2011, 15:11
 
Fecha de Ingreso: abril-2009
Ubicación: en un lugar de la mancha
Mensajes: 236
Antigüedad: 15 años, 6 meses
Puntos: 38
Respuesta: Problema de lógica de condicionales

Tambien puedes chequear si el fichero ha sido subido.

Cuando el usuario sube el file si genera algun error.

Código HTML:
<input name="Img_1" type="file">
<input name="Img_2" type="file">
<input name="Img_3" type="file"> 
Código PHP:
// Chequear algun error.
if ($_FILES['Img_1']['error'] == 4)
   echo 
"No se subio la 1ra imagen.";
if (
$_FILES['Img_2']['error'] == 4)
   echo 
"No se subio la 2da imagen.";
if (
$_FILES['Img_3']['error'] == 4)
   echo 
"No se subio la 3ra imagen."
  #15 (permalink)  
Antiguo 15/06/2011, 17:25
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 4 meses
Puntos: 641
Respuesta: Problema de lógica de condicionales

ok gracias, las validaciones ya están en el controlador.

y si pues ya entendido lo del array de imágenes quedo muy facil

solo es contar el array imagenes[]

y de ahi pasarlo por un foreach.

les dije que andaba pedo XD

Etiquetas: condicionales
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 22:41.