Foros del Web » Programando para Internet » PHP »

Validando algunas situaciones con switch

Estas en el tema de Validando algunas situaciones con switch en el foro de PHP en Foros del Web. Hola, estoy haciendo un sencillo sistema para conocer las distintas alternativas que podrían presentarse cuando un usuario sube una foto. Las alternativas en este caso ...
  #1 (permalink)  
Antiguo 18/06/2011, 23:15
 
Fecha de Ingreso: julio-2007
Mensajes: 287
Antigüedad: 16 años, 9 meses
Puntos: 4
Pregunta Validando algunas situaciones con switch

Hola, estoy haciendo un sencillo sistema para conocer las distintas alternativas que podrían presentarse cuando un usuario sube una foto. Las alternativas en este caso son:

En el caso de

.1 si no hay foto actualmente y no recibo ninguna:
//solo modifico texto

.2 si no hay foto actualmente y estoy recibiendo una:
//guardo la foto y modifico texto si es necesario

.3 si existe actualmente una foto y no recibo ninguna otra:
//solo modifico texto

.4 si existe actualmente una foto y estoy recibiendo una:
// elimino la foto actual y guardo la nueva foto y modifico texto si es necesario

Mi problema esta en el punto 2
cuando no hay foto y recibo una, obtengo el mensaje del punto 1

este es el script por si alguien me da una mano con esto:

Código PHP:
switch ($rutafoto){
        
            case (
$rutafoto == 'NULL' && $nombre1 == ' '):
                    
                        echo 
"No hay Foto, y NO pondremos una</br>";//ok
                        
echo "$nombre1";//ok
                        
break;
                    
            case (
$rutafoto == 'NULL' && $nombre1 !== ' '):
                    
                        echo 
"no hay foto, pondremos una</br>";
                        echo 
"$nombre1";
                        break;
                    
            case (
$rutafoto !== 'NULL' && $nombre1 !== ' '):
                    
                        echo 
"hay foto, la vamos a cambiar por:<br>";//ok
                        
echo "$nombre1";
                        break;
                    
            case (
$rutafoto !== 'NULL' && $nombre1 == ' '):
                    
                        echo 
"hay foto, no la vamos a cambiar</br>";//ok
                        
echo "$nombre1";
                        break;
        
        } 
Nota: la variable $rutafoto es el nombre de la tabla donde guardo la ruta de la foto.
  #2 (permalink)  
Antiguo 18/06/2011, 23:20
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: Validando algunas situaciones con switch

Holas,

Para usar el swith en los cases soloson valores contantes, pero bueno, ahora si analisas los cases al final son true o false, es como decir:

Código PHP:
Ver original
  1. swith(...)
  2. {  case true: ...
  3.     case true: ...
  4.     case false: ...
  5. }

Saludos
Gildus
__________________
.: Gildus :.
  #3 (permalink)  
Antiguo 18/06/2011, 23:25
 
Fecha de Ingreso: julio-2007
Mensajes: 287
Antigüedad: 16 años, 9 meses
Puntos: 4
Respuesta: Validando algunas situaciones con switch

gracias gildus, pero podrías ser un poco más específico.
Qué estoy haciendo mal? o cual es la mejor solución?
  #4 (permalink)  
Antiguo 18/06/2011, 23:31
 
Fecha de Ingreso: julio-2007
Mensajes: 287
Antigüedad: 16 años, 9 meses
Puntos: 4
Respuesta: Validando algunas situaciones con switch

olvide decir, todos funcionan perfecto salvo el punto 2

Código PHP:
case ($rutafoto == 'NULL' && $nombre1 !== ' '):
                    
                        echo 
"no hay foto, pondremos una</br>";
                        echo 
"$nombre1";
                        break; 
  #5 (permalink)  
Antiguo 19/06/2011, 02:39
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Validando algunas situaciones con switch

Creo que el planteamiento no es correcto, de hecho, no le veo necesidad al uso de switch habiendo solo una condicional y un par de derivados:

1- Aqui recibes todos los datos, verificas y asignas en variables
2- Si recibes foto
----- 2.1 - No hay foto
----- 2.2 - Ya hay foto
3- Despues de saber si procesas imagen o no, tienes que guardar los datos

Las acciones a realizar en 2.1 y 2.2 seran las mimas, excepto que tal vez en 2.2 quieras eliminar la foto anterior, pero, en cualquiera de los 4 casos que expones deberas ejecutar los pasos 1 y 3.

Por cierto, a reserva de saber como estas obteniendo los datos para $rutafoto y $nombre1, creo que en lugar de comparar 'NULL' deberia ser NULL (sin comillas) y en lugar de ' ', tendria que ser cadena vacia '' y, aparte... ya te diste cuenta que para comparar desigualdad estas usando 3 signos? !==, esto involucra no solo valores, sino tambien tipo de datos y no sabemos de que manera puede afectar, a menos que nos cuentes de donde y como se asignan ambas variables.
__________________
- León, Guanajuato
- GV-Foto

Última edición por Triby; 19/06/2011 a las 02:45
  #6 (permalink)  
Antiguo 19/06/2011, 09:39
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: Validando algunas situaciones con switch

Me referia al uso correcto del switch, pero bueno ya lo analizaras y te daras cuenta.

Como detalle, las comparaciones que haces dentro del case por ejemplo:
Código PHP:
Ver original
  1. case ($rutafoto == 'NULL' && $nombre1 !== ' '): ...
Las podrias hacer asi:

Código PHP:
Ver original
  1. case ( (is_null($rutafoto) || empty($rutafoto))  && !empty($nombre1) ): ....

Saludos
Gildus
__________________
.: Gildus :.
  #7 (permalink)  
Antiguo 19/06/2011, 16:34
 
Fecha de Ingreso: julio-2007
Mensajes: 287
Antigüedad: 16 años, 9 meses
Puntos: 4
De acuerdo Tema Resuelto: Validando algunas situaciones con if elseif

Bueno, creo que me estaba complicando la cosa. Lo he resuelto de la siguiente manera, muy sencillo jejejej....acá por si es de utilidad para alguna persona:

Código PHP:
$rutafoto=$row['rutafoto'];

$nombre1 $_FILES['archivo1']['name'];
        
        if (
$rutafoto == NULL and $nombre1 == '')
        {
            echo 
"No hay foto y no recibo ninguna";
        }
        elseif (
$rutafoto == NULL and $nombre1 !== '')
        {
            echo 
"No hay foto y estoy recibiendo una";
        }
        elseif (
$rutafoto !== NULL and $nombre1 == '')
        {
            echo 
"Hay foto y no estoy recibiendo ninguna";
        }
        elseif (
$rutafoto !== NULL and $nombre1 !== '')
        {
            echo 
"Hay foto y estoy recibiendo una";
        } 
Gracias a los que se molestaron en colaborar.
Saludos!

Etiquetas: switch, validador
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 01:49.