Portada | Monotemáticos | Secciones | Desarrolladores | Comunidad | Servicios | Servicios profesionales | RSS
Desde 0 | HTML | CSS | ASP | PHP | AJAX | Javascript | Promoción de webs | Rentabilidad de webs
Directorio | Manuales | Scripts | FAQs | Programas | Artículos Copyleft | Actualidad | La Cosecha | Colabora
Registrarse | Vuestras páginas | Foros del web | Lista de correo | Boletín de novedades
Generador METAs | Compras | Busca cursos
Alojamiento | Dominios.es | Micropagos SMS | Buscadores | Patentes, marcas | Creación web | Multimedia | Videos
Desarrollo Freelance | Buscar proyectos | Buscar profesionales | Solicitar desarrollo

Control del flujo en PHP: Condiciones IF


Presentamos una de las herramientas principales usadas para controlar el flujo de nuestros scripts: Los condicionales IF.


01/1/70 - La programación exige en muchas ocasiones la repetición de acciones sucesivas o la elección de una determinada secuencia y no de otra dependiendo de las condiciones específicas de la ejecución.

Como ejemplo, podríamos hacer alusión a un script que ejecute una secuencia diferente en función del día de la semana en el que nos encontramos.

Este tipo de acciones pueden ser llevadas a cabo gracias a una paleta de instrucciones presentes en la mayoría de los lenguajes. En este capítulo describiremos someramente algunas de ellas propuestas por PHP y que resultan de evidente utilidad.

Para evitar el complicar el texto, nos limitaremos a introducir las más importantes dejando de lado otras cuantas que podrán ser fácilmente asimilables a partir de ejemplos prácticos.

Las condiciones if
Cuando queremos que el programa, llegado a un cierto punto, tome un camino concreto en determinados casos y otro diferente si las condiciones de ejecución difieren, nos servimos del conjunto de instrucciones if, else y elseif. La estructura de base de este tipo de instrucciones es la siguiente:

if (condición)
{
   Instrucción 1;
   Instrucción 2;
   ...
}
else
{
   Instrucción A;
   Instrucción B;
   ...
}

Llegados a este punto, el programa verificará el cumplimiento o no de la condición. Si la condición es cierta las instrucciones 1 y 2 serán ejecutadas. De lo contrario (else), las instrucciones A y B serán llevadas a cabo.

Esta estructura de base puede complicarse un poco más si tenemos cuenta que no necesariamente todo es blanco o negro y que muchas posibilidades pueden darse. Es por ello que otras condiciones pueden plantearse dentro de la condición principal. Hablamos por lo tanto de condiciones anidadas que tendrían una estructura del siguiente tipo:

if (condición1)
{
   Instrucción 1;
   Instrucción 2;
   ...
}
else
{
   if (condición2)
   {
      Instrucción A;
      Instrucción B;
      ...
   }
   else
   {
      Instrucción X
      ...
   }
}

De este modo podríamos introducir tantas condiciones como queramos dentro de una condición principal.

De gran ayuda es la instrucción elseif que permite en una sola línea introducir una condición adicional. Este tipo de instrucción simpifica ligeramente la sintaxis que acabamos de ver:

if (condición1)
{
   Instrucción 1;
   Instrucción 2;
   ...
}
elseif (condición2)
{
   Instrucción A;
   Instrucción B;
   ...
}
else
{
   Instrucción X
   ...
}

El uso de esta herramienta resultará claro con un poco de práctica. Pongamos un ejemplo sencillo de utilización de condiciones. El siguiente programa permitiría detectar la lengua empleada por el navegador y visualizar un mensaje en dicha lengua.

<HTML>
<HEAD>
<TITLE>Detector de Lengua</TITLE>
</HEAD>
<BODY>
<?
//Antes de nada introducimos mensajes en forma de variables
$espanol="Hola";
$ingles="Hello";
$frances="Bonjour";

//Ahora leemos del navegador cuál es su lengua oficial
$idioma=substr($HTTP_ACCEPT_LANGUAGE,0,2);

//Formulamos las posibilidades que se pueden dar
if ($idioma == "es")
{echo "$espanol";}
elseif ($idioma=="fr")
{echo "$frances";}
else
{echo "$ingles";}
?>
</BODY>
</HTML>

Ejecutar script

Para poder ver el funcionamiento de este script es necesario cambiar el idioma preferido lo cual puede ser realizado a partir del menú de opciones del navegador.

Para leer la lengua aceptada por el navegador lo que hacemos es definir una variable ($idioma) y, mediante la función substr, recogemos las dos primeras letras del código correspondiente al idioma aceptado por el navegador ($HTTP_ACCEPT_LANGUAGE).

La tercera parte de script se encarga de ver si el navegador está en español (es), francés (fr) o en cualquier otro idioma que no sea ninguno de estos dos y de imprimir el mensaje que proceda en cada caso.

A notar que, cuando se trata de comparar variables, ponemos un doble igual "==" en lugar de un simple "=". Este último queda reservado exclusivamente para asignar valores a variables

 Seguir navegando a partir aquí:
+ 1 manual relacionado
+ 1 categoria relacionada
+ 10 comentarios (Añadir)
+ 8 comentarios no revisados

 Autoría, licencia y acciones sobre este artículo

Informe de Rubén Alvarez*

Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.

* Para consultas técnicas utilizar la lista de correo.

Versión imprimible Versión imprimible del artículo
Enviar artículo por e-mail Enviar artículo por e-mail
Añadir un comentario al artículo Publicar un comentario del artículo

Manuales relacionados con este artículo
Dentro de Programación en PHP

Categorias relacionadas
A través de las categorías de nuestro directorio se pueden encontrar otro tipo de recursos relacionados con este artículo:
+ Entrar en Manuales de PHP


 Comentarios de los visitantes
Los comentarios de los visitantes son para ampliar la información del artículo. Cualquiera puede participar.
Se muestran 10 comentarios revisados

 Comentario de Nacho
06/5/03 
Me gustaría felicitaros por el curso; es claro, sencillo y muy útil. También deciros que tras muchas pruebas no consigo hacer funcionar el script IF detector de lengua. He probado a copiar y pegar pero siempre aparece el mismo error:

Notice: Undefined variable: HTTP_ACCEPT_LANGUAGE in D:\Archivos de programa\Apache Group\Apache2\htdocs\curso_php\prueba.php on line 12 Hello

Un saludo,
Nacho

 Comentario de Anónimo
21/6/03 
Hola!, he probado el codigo tal cual está en la página y me he dado cuenta q si no activo 'register_globals' no funciona ninguna variable local, como $HTTP_ACCEPT_LANGUAGE o $PHP_SELF. El caso es que activarlo puede llevar a problemas de seguridad, como he leido en otros comentarios.

 Comentario de zamy57
05/7/03 
si tienes 'register_globals=off' usa $HTTP_SERVER_VARS['PHP_SELF'] Y
$HTTP_SERVER_VARS["HTTP_ACCEPT_LANGUAGE"] respectivamente

 Comentario de Alfonso
24/5/04 
Hola chicos. Tal como comenta algún con un copy/empastre el código no funciona. Pues bien, aunque ya dan pistas en las lineas de arriba de cómo solucionar esto, os envio el código para que todos podamos hacer nuestro querido COPY/EMPASTRE

<HTML>
<HEAD>
<TITLE>Detector de Lengua</TITLE>
</HEAD>
<BODY>
<?
//Antes de nada introducimos mensajes en forma de variables
$espanol="Hola";
$ingles="Hello";
$aleman="Hallo";

//Ahora leemos del navegador cuál es su lengua oficial
$idioma=substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2);

//Formulamos las posibilidades que se pueden dar
if ($idioma == "es")
{echo "$espanol";}
elseif ($idioma=="de")
{echo "$aleman";}
else
{echo "$ingles";}
?>
</BODY>
</HTML>

 Comentario de Pedro
08/3/05 
bueno, primero felicitaros por este manual que, por lo que veo, a tantos nos ha ayudado...

segundo, y no por eso menos importante, ahí va mi duda:

como hago para realizar un if complejo?, es decir: if (i==1 AND e==2 AND x==3){
// haces esto
} else {
// haces quello
}


Gracias de antemano...

 Comentario de Ghostfaced
05/5/05 
Hola Pedro,no sé si has resuelto ya tu duda, pero te contestas tu mismo cuando escribes la estructura condicional, está bien definida.

Saludos.

 Comentario de javi
19/10/05 
<?php
$var1 = 1;
$var2 = 1;
$var3 = 1;
if($var1 = 1 && $var2 = 1 && $var3 = 1)
   {
    echo("if complejo!");
    //aqui tienes la solucion!
   }
?>

 Comentario de geek
14/3/06 
humm
<?php
$var1 = 1;
$var2 = 1;
$var3 = 1;
if($var1 == 1 && $var2 == 1 && $var3 == 1)
{
echo("if complejo!");
//aqui tienes la solucion!
}
?>
el escript es correcto de las dos maneras pero de esta se compara el valor de las variables con 1.

de la manera que ha puesto javi se asigna el valor uno a la variable, lo cual siempre es cierto.

mucho cuidado con la diferencia entre

asignacion =

y comparacion ==

que es una de las cosas que mas errores inducen en los programadores noveles y los no tan noveles

 Comentario de Adrian
15/5/06 
Asi como es bueno saber como se utiliza el AND tambien es bueno saber como se utiliza el OR

($aaa==1 OR $aaa==3 OR $aaa==5)


 Comentario de Elfakyu
15/11/06 
para comparar usa ==
ya que para asignar se usa =

Añadir un comentario al artículo Añadir un comentario del artículo
 Comentarios sin revisar
Entre los comentarios no revisados puede haber algunos interesantes que se hayan enviado recientemente.
 Se han encontrado 8 comentarios sin revisar

Ver el comentario no revisadoVer los comentarios no revisados
Añadir un comentario al artículo Añadir un comentario del artículo



Enlaces:
Maestrosdelweb
  Ir arriba

Manuales relacionados
+Programación en PHP
Categorías
+Manuales de PHP

Lectura recomendada

Compra este libro en Agapea, la librería urgente a domicilio.

Tienda DesarrolloWeb

DesarrolloWeb.com | Copyright | Anunciese | Acerca de | Datos legales | Contacta | Por GuiarteMultimedia