Foros del Web » Programando para Internet » PHP »

Funcionamiento de else

Estas en el tema de Funcionamiento de else en el foro de PHP en Foros del Web. Hola, Necesito un poco de ayuda para entender el funcionamiento de else.... pongo como ejemplo el siguiente código: Código: if ($_GET['s']=="home"){include 'welcome.php';} if ($_GET['s']=='about'){include 'about.php';} ...
  #1 (permalink)  
Antiguo 14/04/2008, 13:02
Avatar de fullmental  
Fecha de Ingreso: octubre-2004
Ubicación: México DF, Xochimilco
Mensajes: 593
Antigüedad: 19 años, 6 meses
Puntos: 3
Funcionamiento de else

Hola,

Necesito un poco de ayuda para entender el funcionamiento de else.... pongo como ejemplo el siguiente código:

Código:
if ($_GET['s']=="home"){include 'welcome.php';}
if ($_GET['s']=='about'){include 'about.php';}
if ($_GET['s']=="services"){include'services.php';}
if ($_GET['s']=="gallery"){include 'gallery.php';}
if ($_GET['s']=="clients"){include 'clients.php';}
if ($_GET['s']=="contact"){include 'contact.php';}
else{
	echo "else";
}
en donde las condicionales if me funcionan como esperaba... sin embargo en cada una de ellas se ejecuta el else, es decir carga el archivo deseado y al final escribe else...

la intensión era escribir solamente si ninguno de los archivos era seleccionado, poe ejemplo si alguien escribia indes.php?s=otracosa en la barra de direcciones.

al parecer no estoy entendiendo bien el funcionamiento de else, alguien me puede ayudar?

gracias.
  #2 (permalink)  
Antiguo 14/04/2008, 13:37
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 21 años, 10 meses
Puntos: 35
Re: Funcionamiento de else

Si la sección es "contacto", entonces seguro no te aparecerá el else.

La estructura de un if/else suele ser asi:

Código PHP:
if (condicion se cumple) {
 
hace esto
}else{ //si no se cumple
 
hace esto otro

En tu caso la primer condicion esta bien, pero el else solo lo tienes aplicado al ultimo if. Si $_GET['s'] = 'contacto', incluye el archivo, de no ser asi, imprime "else" en pantalla. Y como en todas las demas secicones no se cumple la condicion de que $_GET['s'] sea 'contacto', entonces por eso te toma el else de tu ultimo if.

De todas formas, para eso que buscas es mejor usar un switch

$s = isset($_GET['s']) ? $_GET['s'] : null ; //Esta linea.. date una vuelta por aqui, donde dice operador ternario
Código PHP:
switch ($s) {
 case 
'home'$file 'welcome.php'; break;
 case 
'about'$file 'about.php'; break;
 
//...

Echale una mirada al manual, para cualquier cosa. Saludos.

http://php.net/switch
http://php.net/if
__________________
Sin Ideas
  #3 (permalink)  
Antiguo 14/04/2008, 13:49
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 4 meses
Puntos: 11
Re: Funcionamiento de else

Lo veamos en español,
Suponte que voy de compras... y se me platea la necesidad de tomar una decision sobre cómo me voy a trasladar para traer la mercadería:

Objetivo: Trasladar mercadería a casa.

Decisión:

1) SI mi auto funciona ENTONCES voy en auto
2) SI mi auto no funciona ENTONCES pido prestada una moto
3) SI no me prestan la moto ENTONCES voy en taxi
4) SI no consigo taxti ENTONCES voy en bicicleta
Y SI NO CONSIGO NADA DE LO ANTERIOR ENTONCES NO VOY!!


Fíjate que el paso de decision 2 depende el uno, no es independeiente, el 3 depende del 2 y así sucesivamente. Estas "dependencia" de una decision pero respecto a otra en programación s elogra con (en el caso de php) elseif.


Ya ves que en tu caso lo estas haciendo mal porque en todo usaste if.

Vamos a traducir la situación anterior con la lógica de programación en PHP:

if ( mi auto funciona ) {
ENTONCES voy en auto
}
elseif ( me prestan una moto ) {
ENTONCES voy en moto
}
elseif ( copnsigo taxi ) {
ENTONCES voy en taxi
}
elseif ( consigo bicicleta ) {
ENTONCES voy en bicicleta
}
else {
Y SI NO CONSIGO NADA DE LO ANTERIOR ENTONCES NO VOY!!
}

Ya lo ves????
Cada elseif se evalúa sólo si el nivel superior no se cumplió.

Para terminar, tu código debería estar así (ya lo debes entender bien):

Código PHP:
if ($_GET['s']=="home"){include 'welcome.php';}
elseif (
$_GET['s']=='about'){include 'about.php';}
elseif (
$_GET['s']=="services"){include'services.php';}
elseif (
$_GET['s']=="gallery"){include 'gallery.php';}
elseif (
$_GET['s']=="clients"){include 'clients.php';}
elseif (
$_GET['s']=="contact"){include 'contact.php';}
else{
 echo 
"else";

Tu código programado de esta manera se leería:

1) Si $_GET['s'] es igual a Home entonces incluir welcome.php
2) Si $_GET['s'] no es igual a home pero si es igual a about, entonces incluiir about.php
3) i $_GET['s'] no es igual a home y tampoco es igual a about pero si es igual a clients entonces incluir clients.php
4)....
5)......
............


Queda más claro??

Saludos amigo!!

Última edición por usermax; 14/04/2008 a las 14:05
  #4 (permalink)  
Antiguo 14/04/2008, 13:51
Avatar de fullmental  
Fecha de Ingreso: octubre-2004
Ubicación: México DF, Xochimilco
Mensajes: 593
Antigüedad: 19 años, 6 meses
Puntos: 3
Re: Funcionamiento de else

wooow que rapidez!! muchisimas gracias oso96_2000 lo que esperaba hacer se hace mejor con switch tal y como dices, todo queda claro.

GRACIAS.
  #5 (permalink)  
Antiguo 14/04/2008, 13:54
Avatar de fullmental  
Fecha de Ingreso: octubre-2004
Ubicación: México DF, Xochimilco
Mensajes: 593
Antigüedad: 19 años, 6 meses
Puntos: 3
Re: Funcionamiento de else

muchisimo mas claro usermax muchas gracias tu respuesta aparecio mientras agradecía la respuesta anterior jeje. pero ambos casos me ayudan a entender perfectamente como funciona if y como funciona switch. que amables.

Gracias nuevamente.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 11:17.