Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con if en php no imprime correctamente

Estas en el tema de Problema con if en php no imprime correctamente en el foro de PHP en Foros del Web. Hola , estoy haciendo un script para mostrar el tiempo en un sitio por extraño motivo me imprime la imagen mostlycloudy cuando por parametro esta ...
  #1 (permalink)  
Antiguo 09/07/2013, 12:33
 
Fecha de Ingreso: noviembre-2012
Mensajes: 54
Antigüedad: 11 años, 5 meses
Puntos: 0
Problema con if en php no imprime correctamente

Hola , estoy haciendo un script para mostrar el tiempo en un sitio por extraño motivo me imprime la imagen mostlycloudy cuando por parametro esta viniendo OVERCAST y deberia imprimir la imagen fog.

Espero alguien me ayude, gracias

Código PHP:
if (Date("G") > 06 && Date("G") <= 18){

        if (
$row['tiempo'] == "Clear"){
          echo 
'<img src="./sites/all/themes/arctica_lafuente/weather/Clear.png">';
       } elseif (
$row['tiempo'] == "Partly Cloudy" || "Mostly Sunny" || "Partly Sunny" || "Mostly Cloudy"){
          echo 
'<img src="./sites/all/themes/arctica_lafuente/weather/mostlycloudy.png">';
       } elseif (
$row['tiempo'] == "Fog" || "Hazy" || "Overcast"){
          echo 
'<img src="./sites/all/themes/arctica_lafuente/weather/fog.png">';
       } elseif (
$row['tiempo'] == "Sleet" || "Rain"){
          echo 
'<img src="./sites/all/themes/arctica_lafuente/weather/rain.png">';
       } elseif (
$row['tiempo'] == "Chance Rain" || "Chance Sleet"){
          echo 
'<img src="./sites/all/themes/arctica_lafuente/weather/chancerain.png">';
       }  elseif (
$row['tiempo'] == "Storms"){
          echo 
'<img src="./sites/all/themes/arctica_lafuente/weather/storms.png">';
       }else{
          echo 
'<img src="./sites/all/themes/arctica_lafuente/weather/na.png">';
       }
       }else {
        if (
$row['tiempo'] == "Clear"){
          echo 
'<img src="./sites/all/themes/arctica_lafuente/weather/nocheclear.png">';
       } elseif (
$row['tiempo'] == "Partly Cloudy" || "Mostly Sunny" || "Partly Sunny" || "Mostly Cloudy"){
          echo 
'<img src="./sites/all/themes/arctica_lafuente/weather/nochecloudy.png">';
       } elseif (
$row['tiempo'] == "Fog" || "Hazy" || "Overcast"){
          echo 
'<img src="./sites/all/themes/arctica_lafuente/weather/fog.png">';
       } elseif (
$row['tiempo'] == "Sleet" || "Rain"){
          echo 
'<img src="./sites/all/themes/arctica_lafuente/weather/rain.png">';
       } elseif (
$row['tiempo'] == "Chance Rain" || "Chance Sleet"){
          echo 
'<img src="./sites/all/themes/arctica_lafuente/weather/chancerain.png">';
       } elseif (
$row['tiempo'] == "Storms"){
          echo 
'<img src="./sites/all/themes/arctica_lafuente/weather/storms.png">';
       } else{
        echo 
'<img src="./sites/all/themes/arctica_lafuente/weather/na.png">';
       }
       } 
  #2 (permalink)  
Antiguo 09/07/2013, 12:58
Avatar de bNd170  
Fecha de Ingreso: agosto-2009
Ubicación: $this->setLocation('Valencia', 'Spain');
Mensajes: 365
Antigüedad: 14 años, 8 meses
Puntos: 13
Respuesta: Problema con if en php no imprime correctamente

Hasta donde yo se, esto no vale

Código PHP:
Ver original
  1. if($row['tiempo'] == "Chance Rain" || "Chance Sleet")

Ahi el php esta interpretando que debe entrar si $row['tiempo'] vale Chance Rain o "Chance Sleet", ese ultimo string es como decirle a PHP que entre si 1 o si "a", es decir, es algo que no puede ser evaluado y por lo tanto lo da por afirmativo y entra.

La solucion pasa por poner $row['tiempo'] en todos los casos o hacer un switch que es mucho mas sencillo y comodo
  #3 (permalink)  
Antiguo 09/07/2013, 13:01
 
Fecha de Ingreso: noviembre-2012
Mensajes: 54
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Problema con if en php no imprime correctamente

Me podrías poner une ejemplo??
muchas gracias
  #4 (permalink)  
Antiguo 09/07/2013, 13:08
Avatar de bNd170  
Fecha de Ingreso: agosto-2009
Ubicación: $this->setLocation('Valencia', 'Spain');
Mensajes: 365
Antigüedad: 14 años, 8 meses
Puntos: 13
Respuesta: Problema con if en php no imprime correctamente

Si, claro.

Código PHP:
        switch ($row['tiempo']) {
                case 
'Clear':
                        echo 
'<img src="./sites/all/themes/arctica_lafuente/weather/Clear.png">'
                        break;
                case 
'Partly Cloudy':
                case 
'Mostly Sunny':
                case 
'Partly Sunny':
                case 
'Mostly Cloudy':
                        echo 
'<img src="./sites/all/themes/arctica_lafuente/weather/mostlycloudy.png">'
                        break;
        } 
En un switch, empieza a evaluar de arriba hacia abajo el script y no para hasta terminar o hasta enontrar un break, lo bueno del switch es que si encuentra una coincidencia, entra en todos los siguientes, por lo que podemos anidar posibles grupos de casos, como el que te he ilustrado justo arriba.

Para clear, como era una simple coincidencia, plantamos un break, por si es clear, que se detenga ahi el switch.

Para el grupo que tiene que devolver mostlycloudy dejamos sin código de respuesta tres de ellas puesto que entrando por una de ellas, seguira ejecutando el codigo hasta llegar al final o encontrarse un break, por lo que si es alguna de esas 4 posibilidades, ejecutará ese echo.
  #5 (permalink)  
Antiguo 09/07/2013, 13:14
 
Fecha de Ingreso: noviembre-2012
Mensajes: 54
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Problema con if en php no imprime correctamente

muchas gracias

Etiquetas: correctamente, imprime
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 14:06.