Inicio
Software
Programación
HTML Programación - PHP (ini) Programación - PHP POO Programación - PHP / HTML SQL Java
Hardware
Desarrollos
Quién soy Mapa del sitio

PHP - 5ta Entrega Estructuras de control

Imprimir
Categoría: PHP
Escrito por Ch4rl1X Visitas: 3551

Hoy les traigo las tan esperadas estructuras de control.

Luego de pensar varias definiciones y consular bastante al maestro del indexado de la web. Creo que la mejor definición para las Estructuras de control se la merece pnp.net y es la siguiente:

Todo script PHP está construido en base a una serie de sentencias. Una sentencia puede ser una asignación, una llamada de función, un ciclo, una sentencia condicional o incluso una sentencia que no hace nada (una sentencia vacía). Las sentencias generalmente finalizan con un punto y coma. Adicionalmente, las sentencias pueden agruparse en un conjunto de sentencias, encapsulándolas entre corchetes. Un grupo de sentencias es una sentencia por sí misma también

Enlace original -> Aquí.

Como venimos viendo y sin previo aviso en tutoriales anteriores, la estructura "if" evalúa por valor booleano y si da VERDADERO/TRUE se ejecuta.

 

El anterior les va a parecer familiar, ya que es el último ejemplo con el que terminamos los operadores, en el Post anterior. En donde también vamos a publicar el resultado.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Operadores incremento</title>
</head>
<body>
 
<form action="operadoresLogicos.php" method="POST">
<p>Operador de incremento:</p>
<fieldset>
<legend>Validate el incremento</legend>
<p>Aquí le decimos a PHP que nos valide si colocamos los dos valores en los campos. </p>
<input type="text" id="tipo1" name="tipo1" value=""/>
<input type="text" id="tipo2" name="tipo2" value=""/>
<br /><br />
<input type="submit" value="verificar"/>
<input type="reset" value="Limpiar" />
</fieldset>
</form>
 
<?php
 
if ($_POST['tipo1'] and $_POST['tipo2'])
      {
          echo "<br />Perfecto colocaste ".$_POST['tipo1']." en el primer campo Y ".$_POST['tipo2']." para el segundo. ";
      }
      else
      {
          echo "<br />No colocaste valores en ninguno de los campos.";
      }
 
?>
 
</body>
</html> 

Resultado -> Click Aquí.

If Else.

Se usa para continuar ejecutando si la expresión no valida.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Operadores incremento</title>
</head>
<body>
 
<form action="incrementoDecremento.php" method="POST">
<p>Operador de incremento:</p>
<fieldset>
<legend>Validate el incremento</legend>
<p>Nuesto valor de inicio va a ser 1, desde allí hasta 100 le decimos que cuente.</p>
<input type="text" id="tipo1" name="tipo1" value=""/>
<br /><br />
<input type="submit" value="verificar"/>
<input type="reset" value="Limpiar" />
</fieldset>
</form>
 
<?php
 
echo 'Con esto nuestro código contaría hasta el valor que le digamos mostrando el valor de nuestras valores generados sucesivamente '.'<br>';
 
if($_POST['tipo1'] < 100)
    {
foreach(range(1, $_POST['tipo1']) as $contar)
 
echo $contar." ";
    }
    else
    {
        echo 'Eppa, el valor no puede ser superior o igual a 100 :)...';
    }
 
 
/*
if(++$_POST['tipo1'])
    {
        echo $_POST['tipo1'];
    }
/*
 
?>
 
</body>
</html>

Como vimos en el anterior y no es por reciclar código, sino que es sólo por el hecho de no crear varios ejemplos de las mismas cosas y que no se torne aburrido ;).

Resultado -> Click Aquí.

Elseif. 

Ahora si con ejemplo nuevo, se podría decir que es un anidamiento de etiquetas si valida la expresión continúa ejecutando y si la VUELVE a validar continúa, ésto se puede repetir la cantidad de veces que se quiera.

Traducido al español.

si ($unaVariable > $otraVariable)

{

echo "unaVariable es mayor que otraVariable";

} entonces/mas si($unaVariable == $otraVariable) {

{

echo "unaVariable es igual a otraVariable";

}entonces{

echo "unaVariable es menor que otraVariable";

}

}

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Estructuras de control.</title>
</head>
<body>

<form action="estructurasControlElseIf.php" method="POST">
<p>Estructuras de Control Else If:</p>
<fieldset>
<legend>Valida con los siguientes campos</legend>
<input type="text" id="tipo1" name="tipo1" value=""/>
<br /><br />
<input type="text" id="tipo2" name="tipo2" value=""/>
<br /><br />
<input type="submit" value="verificar"/>
<input type="reset" value="Limpiar" />
</fieldset>
</form>

<?php

echo "<p>El primer valor debe ser mayor o igual que el segundo valor: </p>";


if($_POST['tipo1'] > $_POST['tipo2'])         
		 {
		 echo '<p>El primer valor es mayor al segundo.</p>';
		 }
		 elseif ($_POST['tipo1'] == $_POST['tipo2'])
		 {
		 echo '<p>OK, los valores son iguales.</p>';  
         }
		 else
		 {
         echo '<p>El primer valor es menor que el segundo.<p>';
	     }
?>

</body>
</html>

Como se ve, no se difiere mucho de lo que venimos haciendo ;)... a practicar con las variables escribiendo y generando nuevos ejemplos. ejejee.

Resultado -> Click Aquí.

While

En el siguiente vamos a hacer que PHP cuente desde 1 hasta 10, tené en cuenta que sólo es para practicar :).

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Estructuras de control while</title>
</head>
<body>

<form action="estructurasWhileContar.php" method="POST">
<p>Estructuras de Control While:</p>
<fieldset>
<legend>Hagamos que PHP cuente</legend>
<input type="text" id="tipo1" name="tipo1" value=""/>
<br /><br />
<input type="submit" value="verificar"/>
<input type="reset" value="Limpiar" />
</fieldset>
</form>

<?php

echo "<p>Contar hasta 10 desde: 1.</p>";

if($_POST['tipo1'] === '1')
         {
while($_POST['tipo1'] <= 10)         
		 {
		 echo $_POST['tipo1']++;
		 }
		 }
		 else 
		 {
		 echo "<p><srong><font color=red>El único valor que se puede colocar es 1</font></strong></p>"; 
		 }
?>

</body>
</html>

Colocamos un condicional if y le decimos que, si el valor no es identico a 1 Nos de el mensaje de error sino que vaya y compruebe while. Allí recorre los valores hasta que llega a 10.

Resultado -> Click Aquí.

Do While

Con el siguiente comprobamos por única vez la expresión.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Estructuras de control while</title>
</head>
<body>

<form action="estructurasWhileContar.php" method="POST">
<p>Estructuras de Control While:</p>
<fieldset>
<legend>Hagamos que PHP cuente</legend>
<input type="text" id="tipo1" name="tipo1" value=""/>
<br /><br />
<input type="submit" value="verificar"/>
<input type="reset" value="Limpiar" />
</fieldset>
</form>

<?php

echo "<p>Contar hasta 10 desde: 1.</p>";
do
{
if($_POST['tipo1'] === '1')
		 {
		 echo "<p><srong><font color=red>El único valor que se puede colocar es 1</font></strong></p>";
		 }
		 echo $_POST['tipo1']++;
         }

while($_POST['tipo1'] <= 10)
		 

?>
</body>
</html>

Si de TRUE/VERDAERO va y recorre la expresión del while.

Resultado -> Click Aquí.

For

Son los más complejos y es importante comprender bien su funcionamiento, seguimos viéndolo sobre el formulario.

for(expr1; expr2;epxpr3)

{

sentencia

}

for($evaluamosExpresion; $seEjecuta; $evaluaSiLasAnterioresSiguenVerdaderas) 

{

if ($evaluamosExpresion > 10){

echo $evaluamosExpresion;

}

}

El ejemplo anterior parece estar claro... pero nos vamos a extender a crearlo código con los formularios que veníamos usando.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Estructuras de control for</title>
</head>
<body>

<form action="estructurasFor.php" method="POST">
<p>Estructuras de Control For:</p>
<fieldset>
<legend>Seguimos contando con PHP</legend>
<input type="text" id="tipo1" name="tipo1" value=""/>
<br /><br />
<input type="submit" value="verificar"/>
<input type="reset" value="Limpiar" />
</fieldset>
</form>

<?php

if (trim($_POST['tipo1'], "abcdefghijklmnopqrstuvwxyz"))
    {
    for($_POST['tipo1']; $_POST['tipo1'] <=100; $_POST['tipo1']++){
    echo $_POST['tipo1'];
    }
	}
	else{
	echo 'Eppa!, los caracteres no están permitidos';
	}

?>

</body>
</html>

Resultado -> Click Aquí.

Lo primero que hago es con if decirle que no me permita ésos caracteres, luego con for decimos que si el valor es menor 0 igual a 100 cuentes desde el valor que le traemos del formulario.

Foreach

Se acuerdan que en el tutorial 3 usamos un foreach para contar hasta 10, vamos a avanzar un poco el código para que el array cuente según el valor que le coloquemos.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Estructuras de control for each</title>
</head>
<body>

<form action="estructurasForEach.php" method="POST">
<p>Estructuras de Control For Each:</p>
<fieldset>
<legend>Seguimos contando con PHP</legend>
<input type="text" id="tipo1" name="tipo1" value=""/>
<br /><br />
<input type="submit" value="verificar"/>
<input type="reset" value="Limpiar" />
</fieldset>
</form>

<?php

if (trim($_POST['tipo1'], "abcdefghijklmnopqrstuvwxyz")){

$contar = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20);
foreach(range(0, $_POST['tipo1']) as $contar){
	if($contar <= 20){
	     echo $contar;
		}
	    {
}
}
echo "<--Perfecto PHP puede contar, aunque sólo hasta 20";
}
else 
{
echo "<strong><font color=red>No se permiten carateres. Sólo números!</font></strong>";	
}

?>

</body>
</html>

Básicamente lo que hace foreach es levantar un array y recorrerlo, pero lo recorre en un sólo sentido. Por lo que es necesario llamar a la función reset, cada vez que se quiera recorrer el array nuevamente.

Resultado -> Click aquí.

Break

Se permite recorrer el valor hasta que se indique.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Estructuras de control break</title>
</head>
<body>

<form action="estructurasBreak.php" method="POST">
<p>Estructuras de Control Break:</p>
<fieldset>
<legend>Seguimos contando con PHP</legend>
<p>El array tiene los siguientes valores: cero, uno, dos, tres, cuatro, cinco, seis, siete, ocho nueve, diez.<p>
<input type="text" id="tipo1" name="tipo1" value=""/>
<br /><br />
<input type="submit" value="verificar"/>
<input type="reset" value="Limpiar" />
</fieldset>
</form>

<?php

if (trim($_POST['tipo1'], "0123456789., ")){

$arrValores = array("cero", 'uno', 'dos', 'tres', 'cuatro', 'cinco', 'seis', 'siete', 'ocho', 'nueve', 'diez');

while (list(,$valStop) = each($arrValores)){
	if($valStop == $_POST['tipo1']){
	break;
	}
	echo "<ul>";
	echo "<li>".$_POST['tipo1']."</li>";
	echo "</ul>";

}

echo "Verificacion de palabra escrita: <strong>". $_POST['tipo1']."</strong>.";

}else
{
echo "No están permitidos los números, tampoco que el formulario quede en blanco.";
}

?>
<p>Nota si la palabra no se encuentra en el array se va a recorrer entero, mostrando todas las claves que tiene :p .</p>
</body>
</html>

Al inicio... como venimos haciendo le colocamos un trim.... para que no permita colocar números. Luego con un bucle While le decimos que liste y guarde en una variable $valStop los valores de $arrValores, si lo encuentra hace un break y muestra los valores de las claves almacenadas hasta el valor que se indica.

Resultado -> Click Aquí

En ésta práctica vamos a ver como controlar el ingreso de caracteres en un formulario:

<?php

$contarTexto = $_POST['tipo1'];

$chars = strlen($contarTexto);

if ($chars == 2)
{
//$espacios = substr_count($texto, " ");

//$num_chars_ok = $chars - $espacios;

echo $chars."<br>";
//echo $espacios."<br>";
//echo $num_chars_ok;
}
else
{
echo "El valor tiene que ser igual a 2 caracteres en los campos.";	
}

?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<fieldset>
<legend>Record&aacute; s&oacute;olo se permiten 2 caracteres.</legend>
<input type="text" id="tipo1" name="tipo1" value="<?php echo $_POST['tipo1']; ?>"/>
<br />
<input type="submit" value="Enviar" name="Enviar"/>
<input type="reset" value="Limpiar" />
</fieldset>
</form>

Creamos una variable que trae el dato del formulario, luego chars que contiene la función strlen, que cuenta los caracteres que se ingresan, para el ejemplo no se pueden ingresar 1 caracter ni 3 (ni hablar de más de 3)

Resultado->Click Aquí.

Y continúa!... a no desesperar...