Foros del Web » Programando para Internet » PHP »

No funciona {else} despues de {if}

Estas en el tema de No funciona {else} despues de {if} en el foro de PHP en Foros del Web. Muy buenas foreros, estoy modificando mi web y necesito ahorrar trabajo, he pensado usar los {if} y {else} para que haga la labor automatica. No ...
  #1 (permalink)  
Antiguo 19/02/2011, 10:49
 
Fecha de Ingreso: febrero-2008
Mensajes: 160
Antigüedad: 16 años
Puntos: 1
No funciona {else} despues de {if}

Muy buenas foreros, estoy modificando mi web y necesito ahorrar trabajo, he pensado usar los {if} y {else} para que haga la labor automatica. No tengo ni idea de php pero leyendo manuales mi primer {if} ha funcionado perfecto, el problema es que intento poner luego otras condiciones con {else} y algo debo estar haciendo mal porque la web no carga si lo pongo. Mi intencion es:

Sí hay 8 o mas >= Que la web ponga 12 horas
Me ha funcionado perfecto poniendo: {if $product->quantity >= 8}12 horas{/if}

Sí hay entre 6 y 8 >= Que la web ponga 1 día
¿Como deberia poner el {else} despues del anterior {if} que sí funciona?
Si añado despues de lo anterior {if $product->quantity >= 8}12 horas{/if} {else}{$product->quantity >= 6}1 día{/if} la web no carga

Sí hay entre 4 y 6 >= Que la web ponga 2 días
¿Como deberia poner el {else} despues del anterior {else}?

Sí hay entre 2 y 4 >= Que la web ponga 3 días
¿Como deberia poner el {else} o {elseif} despues del anterior {else}?

Sí hay 1 o menos >= Que la web ponga No disponible
¿Como deberia poner esto despues de todo lo anterior?


Entonces escribiendo el valor product->quantity debo añadir 4 {else} o {elseif} con las cantidades mencionadas arriba para que funcione de la misma forma como lo hizo con el primer {if} que es el ejemplo a seguir. ¿Hay algún entendido en esta materia de los {if},{else} y {elseif}?

muchisimas gracias por vuestro tiempo

saludos cordiales
  #2 (permalink)  
Antiguo 19/02/2011, 10:51
Avatar de JoseTejada  
Fecha de Ingreso: diciembre-2007
Ubicación: Peru.Lima.Cercado.MDuarez.Granaderos172
Mensajes: 218
Antigüedad: 16 años, 3 meses
Puntos: 11
Respuesta: No funciona {else} despues de {if}

Hola lepe, se entiende la lógica que deseas aplicar, pero sería bueno que pongas el código en el que no te funciona el IF-ELSE para poder ver el error.

Saludos.
  #3 (permalink)  
Antiguo 19/02/2011, 10:55
Avatar de kike00  
Fecha de Ingreso: febrero-2005
Ubicación: El Salvador
Mensajes: 180
Antigüedad: 19 años, 1 mes
Puntos: 7
Respuesta: No funciona {else} despues de {if}

Código PHP:
Ver original
  1. if(product->quantity <= 1){
  2.  
  3. }elseif(product->quantity <=4){
  4.  
  5. }elseif(product->quantity <=6){
  6.  
  7. }elseif(product->quantity <= 8){
  8.  
  9. }else{
  10.  
  11. }

sin embargo deberías de revisar mejor tus puntos de corte. También lee un poco sobre la sintaxis y funcionalidad de SWITCH podría serte mas útil.
  #4 (permalink)  
Antiguo 19/02/2011, 10:57
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 1 mes
Puntos: 14
Respuesta: No funciona {else} despues de {if}

Es que no estas usando bien los if:

Prueba así
Código PHP:
Ver original
  1. if ($numero>8) {
  2.  
  3. echo "holaaa";
  4.  
  5. }else{
  6.  
  7. echo "adios";
  8. }
  #5 (permalink)  
Antiguo 19/02/2011, 11:04
 
Fecha de Ingreso: febrero-2008
Mensajes: 160
Antigüedad: 16 años
Puntos: 1
Respuesta: No funciona {else} despues de {if}

Sí claro, aquí lo adjunto, el siguiente codigo es donde empieza y donde termina la sección que quiera modificar:

Este era el codigo anterior:
Código PHP:
<!-- availability -->
            <
p id="availability_statut"{if ($product->quantity == && !$product->available_later) OR ($product->quantity != && !$product->available_now)} style="display:none;"{/if}>
                <
span id="availability_label" style="margin-right:1.2em">{l s='Availability:'}</span>
                <
span id="availability_value" style="color:black"{if $product->quantity == 0} class="warning-inline"{/if}>
                    {if 
$product->quantity == 0}{if $allow_oosp}{$product->available_later}{else}{l s='This product is no longer in stock'}{/if}{else}{$product->available_now}{/if}
                </
span>
            </
p><ul style="padding-bottom: 0.7em;"></ul
Y este es el codigo que acabo de adjuntar y funciona:

Código PHP:
<!-- availability -->
            <
p id="availability_statut"{if ($product->quantity == && !$product->available_later) OR ($product->quantity != && !$product->available_now)} style="display:none;"{/if}>
                <
span id="availability_label" style="margin-right:1.2em">{l s='Availability:'}</span>
                <
span id="availability_value" style="color:black"{if $product->quantity == 0} class="warning-inline"{/if}>
                {if 
$product->quantity >= 8}12 horas{/if}
                </
span>
            </
p><ul style="padding-bottom: 0.7em;"></ul
El ejemplo que indica Kike está muy bien pero yo desearia ponerlo todo seguido en la misma linea porque tengo mucho codigo y funciona un poco lenta la carga, saludos
  #6 (permalink)  
Antiguo 19/02/2011, 11:10
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 1 mes
Puntos: 14
Respuesta: No funciona {else} despues de {if}

Esto es php? y que tiene que ver que lo pongas todo en la misma linea para la carga de la web?

y las etiquetas de php?
  #7 (permalink)  
Antiguo 19/02/2011, 11:40
 
Fecha de Ingreso: febrero-2008
Mensajes: 160
Antigüedad: 16 años
Puntos: 1
Respuesta: No funciona {else} despues de {if}

Buenas Adrian, mas que php yo diria que es Smarty (mezcla de php con html) y la extensión del fichero es .tpl lo que pasa que la modificación que yo intento realizar de if y else corresponde a php. He intetando poner vuestros codigos adjuntados pero sigue sin funcionar, ¿Qué es lo que falla del siguiente codigo y lo que pondriais en su lugar?

{if $product->quantity >= 8}12 horas{/if} {if $product->quantity <= 8}1 día{/if} {if $product->quantity <= 6}2 días{/if} {if $product->quantity >= 4}3 días{/if} {if $product->quantity <= 1}No disponible{/if}


Saludos
  #8 (permalink)  
Antiguo 19/02/2011, 11:51
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 1 mes
Puntos: 14
Respuesta: No funciona {else} despues de {if}

Anido los if en smarty:

{if $product->quantity >= 8}
12 horas
{elseif $product->quantity <= 8}
1 día

{elseif $product->quantity <= 6}
2 días

{elseif $product->quantity >= 4}

3 días
{else}
Welcome, whatever you are.
{/if}
  #9 (permalink)  
Antiguo 19/02/2011, 12:17
 
Fecha de Ingreso: febrero-2008
Mensajes: 160
Antigüedad: 16 años
Puntos: 1
Respuesta: No funciona {else} despues de {if}

muchas gracias Adrian, funciona muy bien tu codigo pero solo en el primer if y en el primer elseif, me explico:

Cuando hay 8 o mas pone 12horas > CORRECTO

Cuando hay menos de 8 pone 1 día > CORRECTO

Cuando hay menos de 6 pone 1 día > incorrecto, deberia de poner 2días

Cuando hay menos de 4 pone 1 día > incorrecto, deberia de poner 3días


Ya casí lo tengo, muchas gracias por tu ayuda
  #10 (permalink)  
Antiguo 19/02/2011, 12:20
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 1 mes
Puntos: 14
Respuesta: No funciona {else} despues de {if}

Tu lógica es incorrecta, almenos de dónde yo he copiado el ejemplo, si dice que es menor de 8 se cumple la priemra condicion y la ejecuíon se para osea aunque 5 es menor que 6 también es menor que 8 por eso se para ahi. Una opción cambias tu lógica o cambias el 6 por el 8 de posición para que vea antes si es menor de 6. No se si me he explicado.

Lo mismo con le 4 y el 8, deberian cambiar sus posiciones para que primero pruebe le menor y tampoco te va a funcionar , deberías replantear la lógica a tu problema, pero la forma de anidar los if en smarty es la que te puse.
  #11 (permalink)  
Antiguo 19/02/2011, 12:24
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 1 mes
Puntos: 14
Respuesta: No funciona {else} despues de {if}

Lo he hecho rápido asi que no sé si funcionará conla lógica de tu problema:

{if $product->quantity >= 8}
12 horas
{elseif $product->quantity <= 4}
3 dias

{elseif $product->quantity <= 6}
2 días

{else}
1 días{/if}
  #12 (permalink)  
Antiguo 19/02/2011, 12:47
 
Fecha de Ingreso: febrero-2008
Mensajes: 160
Antigüedad: 16 años
Puntos: 1
Respuesta: No funciona {else} despues de {if}

He probado cambiando las posiciones de los elseif incluyendo tus indicaciones y casí lo tengo, solo me falla un valor:

Código PHP:
                {if $product->quantity <= 1}

                
No disponible
                
                
{elseif $product->quantity <= 4}

                
3 dias
                
                
{elseif $product->quantity <= 6}
                
                
2 dias
                
                
{elseif $product->quantity >= 8}
                
                
12 horas
          
               
                
                
{else}
                
1 dia
                
{/if} 
EDITOO--------------->>>>>>>>>>>>>

Bueno por fin ya funciona todo perfecto con el codigo anterior adjuntado en ese mismo orden, el problema creo que era que si le indicaba un signo igual o mayor a 8 {elseif $product->quantity >= 8} al ser diferente a los anteriores valores <= pues tomaba un valor mal, la solución ha sido como bien decias añadir unicamente 1 día debajo de {else}

Muchas gracias por todo Adrian, estas hecho un crack, saludoss

Última edición por lepe; 19/02/2011 a las 12:57
  #13 (permalink)  
Antiguo 19/02/2011, 16:52
 
Fecha de Ingreso: febrero-2011
Ubicación: Capital Federal
Mensajes: 45
Antigüedad: 13 años, 1 mes
Puntos: 3
Respuesta: No funciona {else} despues de {if}

Un switch no sería más prolijo? Me alegro que lo hayas podido resolver. Saludos

Etiquetas: Ninguno
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:09.