Debe introducir al menos 3 caracteres en el buscador.
Inicio / Wikis / Cursos gratis / PHP y MySQL para gentes de letras - Estructuras de control: IF, FOR, FOR EACH, WHILE

PHP y MySQL para gentes de letras - Estructuras de control: IF, FOR, FOR EACH, WHILE

 ***** (16 opiniones)
Creative Commons Curso gratis de Coder - 08 de Marzo de 2006
Temas Relacionados: Diseño de bases de datosPHP
3. Estructuras de control: IF, FOR, FOR EACH, WHILE

Tema 3. Estructuras de control: IF, FOR, FOR EACH, WHILE



Las estructuras de control nos permiten controlar el flujo del programa: tomar decisiones, realizar acciones repetitivas etc, dependiendo de unas condiciones que nosotros mismos establezcamos. Así podemos hacer un script que nos salude cada día de la semana de una manera diferente. O por ejemplo hacer un script que nos pida la contraseña una y otra vez hasta que suministremos la opción correcta.
1.- La toma de decisiones if-else:
Quizá la estructura de control más básica y la más utilizada sea if-else:
|| Código: ||
|| if (condicion) {
    instrucciones que hay que ejecutar si la condición es verdadera
} else {
   
Instrucciones que hay que ejecutar si la condición es falsa
}
||

En castellano sería algo así:

|| Código: ||
|| Si (Tal cosa es cierta) {
      Haz esto
} En caso contrario {
   
Haz esto otro
} ||

Veamos un ejemplo real: En un formulario preguntaremos al usuario como se llama, pasaremos las variables a la página "saludos.php" . En saludos.php mostraremos un saludo diferente en función de si el usuario soy yo o es cualquier otro
Formulario
|| Código: ||
|| <html>
<head>
<title> Ejemplo básico de If </title>
</head>
<body>
<form action="saludos.php" method="get">
¿Quién eres?<br />
 <input type="text" name="nombre" />
<input type="submit" name="reset" value=" Enviar " />
</form>
</body>
</html> ||

saludos.php

|| Código: ||
|| <html>
<head>
<title> Ejemplo básico de If </title>
</head>
<body>
<h1> Página de bienvenida</h1>
<?php Empieza el código php
if ($nombre
"Coder") {  Si el nombre es Coder
   echo(" Hombre $nombre! Ya estás cotilleando por aquí otra vez!"); saludo especial
}else {
   echo("Hola, $nombre, gracias por visitarnos");
saludo para los demás
}
?>
</body>
</html> ||
La cláusula else (la parte del if-else que indica lo que hay que hacer si la condición es falsa) es opcional. No es necesario ponerla. Por ejemplo puedo querer un script que sólo me salude a mi. En este caso, cambiaría saludos.php de la siguiente manera:

|| Código: ||
||
<html>
<head>
<title> Ejemplo básico de If </title>
</head>
<body>
<h1> Página de bienvenida</h1>
<?php empieza el código php
if ($nombre
"Coder") { Si el nombre es Coder
   echo(" Hombre $nombre! Ya estás cotilleando por aquí otra vez!"); Saludo para Coder
}
?>
</body>
</html> ||

NOTA: Cuidado con el operador
, es importante recordar que hay que utilizar un doble signo igual. Si utilizas sólo "=", estarás utilizando el operador de asignación, es decir estableciendo que $nombre es igual a Coder con lo que la condición siempre sería cierta
Las condiciones pueden complicarse mucho más, supongamos que queremos dejarte pasar sólo sí además de llamarte Coder, te sabes la contraseña, que en nuestro caso es "foros":
Formulario:
|| Código: ||
|| <html>
<head>
<title> Ejemplo básico de If </title>
</head>
<body>
<form action="saludos.php" method="get">
¿Quién eres?<br />
 <input type="text" name="nombre" /><br />
¿Y tu Contraseña?<br />
 <input type="text" name="pass" />
<input type="submit" name="reset" value=" Enviar " />
</form>
</body>
</html> ||

saludos.php

|| Código: ||
|| <html>
<head>
<title> Ejemplo básico de If </title>
</head>
<body>
<h1> Página de bienvenida</h1>
<?php
Empieza el código php
if ($nombre
"Coder" and $pass
"foros") { 
Si el nombre es Coder y la contraseña foros
   echo(" Hombre $nombre! Ya estás cotilleando por aquí otra vez!");
saludo especial
}else {
   echo("ahhhhhhhhhhh como no te sabes el nombre y la contraseña, no puedes pasar"); saludo para los demás
}
?>
</body>
</html> ||

Además tenemos la instrucción elseif, que como su nombre indica, es una combinación de if y else. Añade una nueva condición en el caso de que la primera fuera falsa y sólo ejecuta las instrucciones si esta nueva condición es verdadera. Es decir,
Veamos un ejemplo:
|| Código: ||
|| if ($a > $b) {
Ejecuta esto si a es Mayor que b
    echo("a es mayor que  b");
} elseif ($a
$b) {
si a no es mayor que be, comprueba si a es igual a b
    echo("a es igual que  b");
} else {
si no se cumplen las anteriores condiciones ejecuta ésta
    echo ("a es menor  que b");
} ||

2- Bucles: While
If else nos permitía decidir si queríamos ejecutar o no una instrucción en función de una condición, los bucles nos permiten utilizar una condición para determinar cuantas veces queremos ejecutar una instrucción.:

|| Código: ||
|| While (condicion) {
Instrucciones a ejecutar una y otra
vez mientras la condición sea cierta
} ||

El funcionamiento es muy parecido al del if-else, la diferencia estriba en que si la condición es cierta y se ejecuta la orden, la condición vuelve a comprobarse una y otra vez mientras siga siendo cierta. En cambio en el cambio del if-else sólo se comprueba la condición una vez, si es cierta se ejecuta la instrucción y se sigue con el programa.
Veamos un ejemplo:
|| Código: ||
|| $cantidad = 1;
 while ($cantidad < 10) {
   echo ("$cantidad ");
   $cantidad++;
} ||


Esto traducido a castellano sería:
$cantidad = 1; $cantidad es igual a uno
while ($cantidad < 10) Mientras el valor de la variable $cantidad sea menor que 10
echo ("$cantidad "); Escribe el valor de cantidad
$cantidad++ (suma 1 al valor que tenga $cantidad, también podríamos haber escrito $cantidad = $cantidad +1)
Veamos como funciona el script paso a paso,
$Cantidad es igual a 1
1 es menor que 10
Escribo 1 en pantalla
$cantidad = 2 (1+1)
2 es menor que 10
Escribo 2 en pantalla
$cantidad = 3 (2+1)&#8230;
Si ejecutamos este script, en pantalla veríamos 1 2 3 4 5 6 7 8 9
3- Bucles: do While
Los bucles do while, son muy parecidos a los bucles while, sólo que comprobamos si la condición es cierta al final del bucle en lugar de al principio. Así nuestras instrucciones se ejecutan siempre al menos una vez, lo que no ocurre en las condiciones while si la condición es falsa.
|| Código: ||
|| $cantidad = 1;
do {
   echo ($cantidad);
} while ($cantidad<1); ||


Traducido sería
$cantidad = 1
do ( ejecuta
echo ($cantidad); escribe el valor de cantidad
while ($cantidad<1); mientras cantidad sea mayor que 1 -> la condición es falsa luego el programa sale del bucle, pero ha escrito una vez el valor de $cantidad. El resultado en pantalla sería 1
4- Bucles: for
Los bucles for funcionan exactamente igual que en C . Con una sola instrucción controlamos todo el bucle, así que para los vaguetes está muy bien.
|| Código: ||
|| for (valor inicial; condicion; ejecutar en cada blucle) {
Instrucciones a ejecutar mientras la condición sea cierta
} ||

Ejemplo
|| Código: ||
|| for ($cantidad = 1; $cantidad <10; $i++) {
    echo("$cantidad");
} ||


Traducido es igual a:
Cantidad es igual a 1, mientras cantidad sea menor que 10 escribe cantidad en pantalla y después súmale 1 al valor de cantidad. Es decir, es exactamente el mismo ejemplo que vimos en el bucle while pero de otra manera.
4- Swich/case
Nos permite ejecutar un bloque de código u otro dependiendo del valor de una variable. Veamos un ejemplo.
Primero para asignar un valor a la variable, vamos a hacernos un formulario:
|| Código: ||
|| <html>
<head>
<title> Ejemplo de switch </title>
</head>
<body>
<form action="switch.php" method="get">
¿Quién eres?<br />
<input type="radio" name="quien" value="cgus" /> cgus<br />
   <input type="radio" name="quien" value="xela" /> xela<br />
   <input type="radio" name="quien" value="adanedhel" /> adanedhel<br />
   <input type="radio" name="quien" value="jorgito" /> jorgito<br />
<input type="submit" name="reset" value=" Enviar " />
</form>
</body>
</html> ||

Switch.php
|| Código: ||
|| <html>
<head>
<title>Ejemplo de Swich</title>
</head>
<?php
switch($quien) {
case "cgus": Primera posibilidad
   
   echo (" $quien es todo un leader ");
   break;
case "adanedhel":
segunda posibilidad
   echo ("$quien es un elfo");
   break;
case "xela": tercera posibilidad
      echo ("$quien es normal");
   break;
default:
Posiblidad si no es ninguna de las anteriores
      echo ("$quien es un desconocido");
}
?>
</body>
</html> ||

Tenéis más información sobre las estructuras de control en el manual de php
http://www.php.net/manual/es/control-structures.php------**Sintaxis alternativa
PHP ofrece una sintaxis alternativa para alguna de sus estructuras de control; a saber, if, while, for, y switch. Puede hace el código más legible en algunos casos, especialmente en las páginas multiuso que vamos a ver a continuación:
If con construcción alternativa
||
Código: ||
|| <?php if ($a
5): ?>
 A es igual a 5
 <?php endif; ?> ||

if con elseif y else en el formato alternativo:

||
Código: ||
||
if ($a
5):
     print "a es igual a 5";
     print "...";
 elseif ($a
6):
     print "a es igual a 6";
     print "!!!";
 else:
     print ||
"a no es ni 5 ni 6";
endif;
While utilizando la construcción alternativa
||
Código: ||
|| $i = 1;
while ($i <= 10):
print $i;
$i++;
endwhile; ||


For con la construcción alternativa

||
Código: ||
|| for (expr1; expr2; expr3): sentencia; ...; endfor; ||


Páginas Multiuso
Páginas multiuso son aquellas que pueden mostrar un contenido completamente diferente dependiendo de alguna condición. De esta forma, podemos hacer varias cosas en un solo documento.
La estructura habitual de una página multiuso es:
||
Código: ||
|| <html>
<head>
<title> Página Multiusos </title>
</head>
<body>
<php?
If (condición) { ?>
<!-- HTML que se mostará si la condición es cierta -->
<?php }else{ ?>
   <!-- html que se mostratará si la condición es falsa -->
<?php } ?>
   
</body>
</html>
O utilizando la sintaxis alternativa que acabamos de ver:
<html>
<head>
<title> Página Multiusos </title>
</head>
<body>
<php?
if (condición): ?>
<!-- HTML que se mostará si la condición es cierta -->
<?php else: ?>
   <!-- html que se mostratará si la condición es falsa -->
<?php endif; ?>
   
</body>
</html> ||

Esto puede parecer un poco confuso. Pero es precisamente una de las características que están haciendo muy popular al PHP: su capacidad de pasar de php a html en cualquier momento y todas las veces que sea necesario.
Ejemplo
Para nuestro ejemplo vamos a utilizar el ejemplo que vimos para switch y utilizar una sola página (multiuso.php) para el formulario y las respuestas en lugar de las dos que teníamos antes

||
Código: ||
|| <html>
<head>
<title> Página Multiusos </title>
</head>
<body>
<?php
if (!isset($quien)): ?>
   
<html>
<head>
<title> Ejemplo de switch </title>
</head>
<body>
<form action="multiuso1.php" method="get">
¿Quién eres?<br />
<input type="radio" name="quien" value="cgus" /> cgus<br />
   <input type="radio" name="quien" value="xela" /> xela<br />
   <input type="radio" name="quien" value="adanedhel" /> adanedhel<br />
   <input type="radio" name="quien" value="jorgito" /> jorgito<br />
<input type="submit" name="reset" value=" Enviar " />
</form>
</body>
</html>
<?php else:
 
switch($quien) {
case "cgus": Primera posibilidad
   
   echo (" $quien es todo un leader ");
   break;
case "adanedhel":
segunda posibilidad
   echo ("$quien es un elfo");
   break;
case "xela": tercera posibilidad
      echo ("$quien es un normal");
   break;
default:
Posiblidad si no es ninguna de las anteriores
      echo ("$quien es un desconocido");
}
 endif;
?>
</body>
</html> ||

for each
Es un tipo de bucle especial para matrices. Cómo no hemos visto el tema de las matrices todavía, de momento no lo vamos a explicar. Tocaremos este tema al hablar de las matrices.

EJERCICIO PRÁCTICO



1.- Haz un script que escriba todos los números pares del 1 al 100
utilizando el bucle while
2.- Escribe un script utilizando un bucle que se ejecute una vez y en el cual la condición sea imposible.
3.- Haz un script que escriba todos los números impares del 1 al 100
utilizando el bucle for
4.- Reescribe el ejercicio del tema 2, de forma que utilicemos 2 documentos en lugar de 3.
En el primer documento utilizarás una página multiuso. Si el usuario no ha enviado datos, le presentas el formulario. Si el usuario ya ha rellenado los datos verá la página con los enlaces.
En el segundo documento, utilizaremos las estructuras de control que hemos visto para que el usuario vea unos datos u otros en función del enlace que utilice.
Datos de contacto: Verá una tabla con sólo los datos de contacto.
Datos de empresa: Verá una tabla con sólo los datos de la empresa.
Datos de viaje: Verá una tabla con sólo los datos del viaje.
Todo: verá las tres tablas.
La solución a los ejercicios del tema 3 se puede descargar desde:
http://www.tomatoma.ws/php/ejercicio3/ejercicio.zip


Artículo enviado por: Coder el 09.09.2002. Lecturas: 2479

Notepad Rules!!!!!!!!!!!!!



Comentarios:


TrackBacks - ¿Comentar?

Url para hacer trackback a este artículo:
http://www.tomatoma.ws/cgi-bin/tb/tb.cgi/136

No hay comentarios sobre este artículo de momento
Autor y licencia de 'PHP y MySQL para gentes de letras - Estructuras de control: IF, FOR, FOR EACH, WHILE'
Coder Extraído de: http://www.tomatoma.ws/subsecciones.php?forum_id=27&catid=22&todos=1

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Wikis relacionados con 'PHP y MySQL para gentes de letras - Estructuras de control: IF, FOR, FOR EACH, WHILE'

La instalación de estos programas es muy fácil, PHP y MySQL vienen comprimidos en formato... Más »
PHP se ha convertido en el lenguaje de facto de Internet y no es difícil... Más »
PHP es un lenguaje de programación diseñado específicamente para aplicaciones Web; las características más destacables... Más »
PHP es un lenguaje de programación diseñado específicamente para aplicaciones Web; las características más destacables... Más »
PHP es un lenguaje en que usualmente el tipo de dato de una variable no... Más »
¿Estás seguro de que deseas eliminar este capítulo?