15, diciembre - 2018

Estructuras condicionales

Estructuras de control condicionales en PHP

PHP como cualquier lenguaje de programación trae incorporadas las denominadas estructuras de control, éstas van a permitir tomar decisiones sobre cómo queremos que siga el flujo de la programación o secuencia de comandos. Las estructuras de control pueden ser de dos tipos condicionales (de bifurcación) o repetitivas (de repetición o bucles).
Las estructuras de control condicionales nos van a ayudar a que nuestros scripts de puedan tomar decisiones y responder a determinadas acciones que realice el usuario o determinadas lógicas de programación, vamos a necesitar que éstos puedan controlar dichas acciones y tomar la decisión que corresponda en cada caso, igual, para que nuestros scripts puedan repetir una acción durante un determinado número de veces y en la repetición pueda realizar una determinada acción que implementemos, van a ser necesarias las estructuras de control, en este caso de repetición o bucle.

Estructuras de Control if, else, elseif

Las primeras estructuras de control que vamos a ver son las condicionales if (si), else (o), elseif (o si), con las que podemos revisar una condición y dejar el programa siga por el camino o flujo de programación que deseemos.

Estructura de control if

La estructura de control if (si en inglés) le estará indicando al script que continúe solo en caso de que se cumpla una condición, de esa forma podemos responder con una acción a otra previa, imaginemos que por ejemplo, deseamos mostrar un determinado mensaje al usuario pero sólo en el caso de que sea menor de 18 años, en ese caso la lógica de la programación sería preguntar la edad a nuestro usuario y en función a su respuesta mostrar el mensaje o no, lo podríamos hacer de la siguiente forma (teniendo en cuenta que previamente ha rellenado un formulario y enviado su edad mediante una variable $POST)


if(isset($_POST['edad'])) {

   $edad = intval($_POST['edad']);

   if($edad < 18) {

     echo "ALERTA: Este apartado es para mayores de 18 años, por favor regresa a la página anterior..."

     exit();

   }

}

Comentando este código podríamos indicar que, declaramos un primer if isset variable post para ver si en realidad hemos recibido la edad (en caso de no declarar esto produciríamos un error de programación y se detendría el script) para una vez estemos seguros de haber recibido la variable comprobemos si esta información se corresponde con una edad menor a 18 años, en cuyo caso mostramos el mensaje de alerta mediante la instrucción echo y detenemos la ejecución de la página mediante la instrucción exit.

Estructura de control if else

Siguiendo con la estructura de control if, tendríamos la siguiente declaración else, esta se va a encargar de ofrecer dos alternativas a la validación o comparación de la sentencia, if (si esto) else (o esto), siguiendo también con el ejemplo, imaginemos que deseamos que continúe el programa ofreciendo un contenido en el caso de que la edad del visitante sea mayor a 18 años, lo haríamos de la siguiente forma:


if(isset($_POST['edad'])) {

   $edad = intval($_POST['edad']);

   if($edad < 18) {
     echo "ALERTA: Este apartado es para mayores de 18 años, por favor regresa a la página anterior..."; exit(); 
   }else { 
     echo "Bien eres mayor de edad y se puede seguir ejecutando la sentencia...";
   }

}

Comentando el código, es igual que el anterior con la particularidad de que esta vez hemos incluido otra acción en caso de que la respuesta sea un íntegro mayor que 18, a continuación de la declaración else.

 Nota: otra forma de encerrar las declaraciones condicionales if, else y elseif muy cómoda y que nos puede ayudar en el caso de que la programación contenga muchas llaves de cierre { }, es declarar éstas con los operadores : y endif, de la siguiente manera if (condición): (codigo en caso true) else: (código en caso false) endif;
Si nos fijamos habría que sustituir la apertura de llaves { por el signo de dos puntos y el cierre de llaves } por la sentencia endif; Como decimos más práctica e intuitiva a la hora de poder leer el código fuente ya escrito y totalmente válida en la ejecución de nuestros comandos.

Estructura de control if elseif else

En esta última declaración y siguiendo con el mismo ejemplo, vamos a realizar una segunda comprobación en este caso que sea mayor de 18 años y que además viva en España, para ello vamos a incorporar otra variable de formulario POST, con el dato de país de procedencia, lo haríamos de la siguiente forma:


if(isset($_POST['edad'])) {

   $edad = intval($_POST['edad']);
   $procedencia = strval($_POST['pais']);

   if($edad < 18) {
     echo "ALERTA: Este apartado es para mayores de 18 años, por favor regresa a la página anterior..."; exit();
   }elseif($procedencia !== 'España') {
     echo "ALERTA: Eres mayor de 18 años pero no eres de españa, por favor regresa a la página anterior..."; exit(); 
   }else { 
     echo "Bien eres mayor de edad y además español, se puede seguir ejecutando la sentencia...";
   }

}

Comentando el código, en este caso si nos fijamos, no ha sido necesario declarar un segundo isset para la variable POST país, la ingresar una variable POST y comprobarlo, el sistema da por hecho que se ha introducido valor en la variable y no da error, recordemos que POST[] es un array, una vez declarado podrá tener tantos valores como se hayan introducido en su declaración, después de eso, vemos que la sentencia elseif realiza la segunda comprobación, esto lo podríamos haber hecho en la primera declaración con un operador de lógica && pero por motivos didácticos lo hemos separado para ver su uso.

Nota: las sentencias if, else y elseif son aconsejadas en los casos que los comprobandos sean complejos y no haya más de 3 o 5 comprobaciones, para códigos o sentencias con más de 5 comparaciones es mejor usar la declaración switch que veremos a continuación, esto es debido a que con las sentencias if else la máquina tendrá que comprobar y analizar todas las que haya declaradas, en el caso de una sentencia switch la máquina hará una sola comprobación y buscará el resultado correcto una sola vez, depurando mucho más los recursos y tiempos de ejecución de la misma, la regla sería, siempre que sea posible, usar switch en lugar de if.

Estructuras de control switch

Para finalizar tendríamos la sentencia de control switch, ésta va a comprobar el resultado de una lista dependiendo de la condición que hayamos marcado y ejecutará  un fragmento de código u otro, lo haríamos de la siguiente forma:


if(isset($_POST['edad'])) {

   $edad = intval($_POST['edad']);
   switch ($edad) {
     case > 17:
       echo "Bien eres mayor de edad...";
     break;

   }

}

Si comentamos el código, vemos la declaración switch realiza las comprobaciones entre las sentencias case y break, en caso de cumplirse la condición edad mayor a 17, osea 18 o más, muestra el mensaje en pantalla. Para declarar una sentencia en caso de no cumplirse la condición o condiciones comprobadas usaríamos la sentencia default, que vemos a continuación:


if(isset($_POST['edad'])) {

   $edad = intval($_POST['edad']);
   switch ($edad) {
     case > 17:
       echo "Bien eres mayor de edad...";
     break;
     default:
       echo "ALERTA: tienes que ser mayor de 18 años para poder continuar...";
       exit();
     break;

   }

}

Podemos declarar tantas sentencias case como deseemos, e incluir en éstas operadores de control lógico && y || siempre separados entre paréntesis para las declaraciones más complejas.

Códigos de Ejemplos

Dejamos el código de los ejemplos completo con formulario para declarar las variables de entrada edad y país:

<?php
if(isset($_POST['edad'])) {
$edad = intval($_POST['edad']);
$procedencia = strval($_POST['pais']);
if($edad < 18) {
echo "ALERTA: Este apartado es para mayores de 18 años, por favor regresa a la página anterior..."; exit();
}elseif($procedencia !== 'ES') {
echo "ALERTA: Eres mayor de 18 años pero no eres de españa, por favor regresa a la página anterior..."; exit();
}else {
echo "Bien eres mayor de edad y además español, se puede seguir ejecutando la sentencia...";
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//ES" "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>Ejemplo PHP sentencias If else elseif</title>
</head>
<body>
<form action="<?= $_SERVER['PHP_SELF']; ?>" id="ejemplo" name="frmejemplo" method="post">
<input type="text" name="edad" id="impedad" />
<select name="pais">
<option value="AF">Afganistán</option>
<option value="AL">Albania</option>
<option value="DE">Alemania</option>
<option value="AD">Andorra</option>
<option value="AO">Angola</option>
<option value="AI">Anguilla</option>
<option value="AQ">Antártida</option>
<option value="AG">Antigua y Barbuda</option>
<option value="AN">Antillas Holandesas</option>
<option value="SA">Arabia Saudí</option>
<option value="DZ">Argelia</option>
<option value="AR">Argentina</option>
<option value="AM">Armenia</option>
<option value="AW">Aruba</option>
<option value="AU">Australia</option>
<option value="AT">Austria</option>
<option value="AZ">Azerbaiyán</option>
<option value="BS">Bahamas</option>
<option value="BH">Bahrein</option>
<option value="BD">Bangladesh</option>
<option value="BB">Barbados</option>
<option value="BE">Bélgica</option>
<option value="BZ">Belice</option>
<option value="BJ">Benin</option>
<option value="BM">Bermudas</option>
<option value="BY">Bielorrusia</option>
<option value="MM">Birmania</option>
<option value="BO">Bolivia</option>
<option value="BA">Bosnia y Herzegovina</option>
<option value="BW">Botswana</option>
<option value="BR">Brasil</option>
<option value="BN">Brunei</option>
<option value="BG">Bulgaria</option>
<option value="BF">Burkina Faso</option>
<option value="BI">Burundi</option>
<option value="BT">Bután</option>
<option value="CV">Cabo Verde</option>
<option value="KH">Camboya</option>
<option value="CM">Camerún</option>
<option value="CA">Canadá</option>
<option value="TD">Chad</option>
<option value="CL">Chile</option>
<option value="CN">China</option>
<option value="CY">Chipre</option>
<option value="VA">Ciudad del Vaticano (Santa Sede)</option>
<option value="CO">Colombia</option>
<option value="KM">Comores</option>
<option value="CG">Congo</option>
<option value="CD">Congo, República Democrática del</option>
<option value="KR">Corea</option>
<option value="KP">Corea del Norte</option>
<option value="CI">Costa de Marfíl</option>
<option value="CR">Costa Rica</option>
<option value="HR">Croacia (Hrvatska)</option>
<option value="CU">Cuba</option>
<option value="DK">Dinamarca</option>
<option value="DJ">Djibouti</option>
<option value="DM">Dominica</option>
<option value="EC">Ecuador</option>
<option value="EG">Egipto</option>
<option value="SV">El Salvador</option>
<option value="AE">Emiratos Árabes Unidos</option>
<option value="ER">Eritrea</option>
<option value="SI">Eslovenia</option>
<option value="ES" selected>España</option>
<option value="US">Estados Unidos</option>
<option value="EE">Estonia</option>
<option value="ET">Etiopía</option>
<option value="FJ">Fiji</option>
<option value="PH">Filipinas</option>
<option value="FI">Finlandia</option>
<option value="FR">Francia</option>
<option value="GA">Gabón</option>
<option value="GM">Gambia</option>
<option value="GE">Georgia</option>
<option value="GH">Ghana</option>
<option value="GI">Gibraltar</option>
<option value="GD">Granada</option>
<option value="GR">Grecia</option>
<option value="GL">Groenlandia</option>
<option value="GP">Guadalupe</option>
<option value="GU">Guam</option>
<option value="GT">Guatemala</option>
<option value="GY">Guayana</option>
<option value="GF">Guayana Francesa</option>
<option value="GN">Guinea</option>
<option value="GQ">Guinea Ecuatorial</option>
<option value="GW">Guinea-Bissau</option>
<option value="HT">Haití</option>
<option value="HN">Honduras</option>
<option value="HU">Hungría</option>
<option value="IN">India</option>
<option value="ID">Indonesia</option>
<option value="IQ">Irak</option>
<option value="IR">Irán</option>
<option value="IE">Irlanda</option>
<option value="BV">Isla Bouvet</option>
<option value="CX">Isla de Christmas</option>
<option value="IS">Islandia</option>
<option value="KY">Islas Caimán</option>
<option value="CK">Islas Cook</option>
<option value="CC">Islas de Cocos o Keeling</option>
<option value="FO">Islas Faroe</option>
<option value="HM">Islas Heard y McDonald</option>
<option value="FK">Islas Malvinas</option>
<option value="MP">Islas Marianas del Norte</option>
<option value="MH">Islas Marshall</option>
<option value="UM">Islas menores de Estados Unidos</option>
<option value="PW">Islas Palau</option>
<option value="SB">Islas Salomón</option>
<option value="SJ">Islas Svalbard y Jan Mayen</option>
<option value="TK">Islas Tokelau</option>
<option value="TC">Islas Turks y Caicos</option>
<option value="VI">Islas Vírgenes (EEUU)</option>
<option value="VG">Islas Vírgenes (Reino Unido)</option>
<option value="WF">Islas Wallis y Futuna</option>
<option value="IL">Israel</option>
<option value="IT">Italia</option>
<option value="JM">Jamaica</option>
<option value="JP">Japón</option>
<option value="JO">Jordania</option>
<option value="KZ">Kazajistán</option>
<option value="KE">Kenia</option>
<option value="KG">Kirguizistán</option>
<option value="KI">Kiribati</option>
<option value="KW">Kuwait</option>
<option value="LA">Laos</option>
<option value="LS">Lesotho</option>
<option value="LV">Letonia</option>
<option value="LB">Líbano</option>
<option value="LR">Liberia</option>
<option value="LY">Libia</option>
<option value="LI">Liechtenstein</option>
<option value="LT">Lituania</option>
<option value="LU">Luxemburgo</option>
<option value="MK">Macedonia, Ex-República Yugoslava de</option>
<option value="MG">Madagascar</option>
<option value="MY">Malasia</option>
<option value="MW">Malawi</option>
<option value="MV">Maldivas</option>
<option value="ML">Malí</option>
<option value="MT">Malta</option>
<option value="MA">Marruecos</option>
<option value="MQ">Martinica</option>
<option value="MU">Mauricio</option>
<option value="MR">Mauritania</option>
<option value="YT">Mayotte</option>
<option value="MX">México</option>
<option value="FM">Micronesia</option>
<option value="MD">Moldavia</option>
<option value="MC">Mónaco</option>
<option value="MN">Mongolia</option>
<option value="MS">Montserrat</option>
<option value="MZ">Mozambique</option>
<option value="NA">Namibia</option>
<option value="NR">Nauru</option>
<option value="NP">Nepal</option>
<option value="NI">Nicaragua</option>
<option value="NE">Níger</option>
<option value="NG">Nigeria</option>
<option value="NU">Niue</option>
<option value="NF">Norfolk</option>
<option value="NO">Noruega</option>
<option value="NC">Nueva Caledonia</option>
<option value="NZ">Nueva Zelanda</option>
<option value="OM">Omán</option>
<option value="NL">Países Bajos</option>
<option value="PA">Panamá</option>
<option value="PG">Papúa Nueva Guinea</option>
<option value="PK">Paquistán</option>
<option value="PY">Paraguay</option>
<option value="PE">Perú</option>
<option value="PN">Pitcairn</option>
<option value="PF">Polinesia Francesa</option>
<option value="PL">Polonia</option>
<option value="PT">Portugal</option>
<option value="PR">Puerto Rico</option>
<option value="QA">Qatar</option>
<option value="UK">Reino Unido</option>
<option value="CF">República Centroafricana</option>
<option value="CZ">República Checa</option>
<option value="ZA">República de Sudáfrica</option>
<option value="DO">República Dominicana</option>
<option value="SK">República Eslovaca</option>
<option value="RE">Reunión</option>
<option value="RW">Ruanda</option>
<option value="RO">Rumania</option>
<option value="RU">Rusia</option>
<option value="EH">Sahara Occidental</option>
<option value="KN">Saint Kitts y Nevis</option>
<option value="WS">Samoa</option>
<option value="AS">Samoa Americana</option>
<option value="SM">San Marino</option>
<option value="VC">San Vicente y Granadinas</option>
<option value="SH">Santa Helena</option>
<option value="LC">Santa Lucía</option>
<option value="ST">Santo Tomé y Príncipe</option>
<option value="SN">Senegal</option>
<option value="SC">Seychelles</option>
<option value="SL">Sierra Leona</option>
<option value="SG">Singapur</option>
<option value="SY">Siria</option>
<option value="SO">Somalia</option>
<option value="LK">Sri Lanka</option>
<option value="PM">St Pierre y Miquelon</option>
<option value="SZ">Suazilandia</option>
<option value="SD">Sudán</option>
<option value="SE">Suecia</option>
<option value="CH">Suiza</option>
<option value="SR">Surinam</option>
<option value="TH">Tailandia</option>
<option value="TW">Taiwán</option>
<option value="TZ">Tanzania</option>
<option value="TJ">Tayikistán</option>
<option value="TF">Territorios franceses del Sur</option>
<option value="TP">Timor Oriental</option>
<option value="TG">Togo</option>
<option value="TO">Tonga</option>
<option value="TT">Trinidad y Tobago</option>
<option value="TN">Túnez</option>
<option value="TM">Turkmenistán</option>
<option value="TR">Turquía</option>
<option value="TV">Tuvalu</option>
<option value="UA">Ucrania</option>
<option value="UG">Uganda</option>
<option value="UY">Uruguay</option>
<option value="UZ">Uzbekistán</option>
<option value="VU">Vanuatu</option>
<option value="VE">Venezuela</option>
<option value="VN">Vietnam</option>
<option value="YE">Yemen</option>
<option value="YU">Yugoslavia</option>
<option value="ZM">Zambia</option>
<option value="ZW">Zimbabue</option>
</select>
<button id="envio">Enviar</button>
</form>
</body>
</html>
</span>
¿Te ha parecido interesante este contenido..?
En ese caso, te pedimos por favor que nos des tu valoración graicas a esto podemos mejorar nuestras lecciones. Gracias.
1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (Ninguna valoración todavía)
Cargando…

Social Media

  • YouTube

    Suscríbete a nuestro canal de YouTube para ver todos nuestros vídeos sobre programación

  • Twitter

    Síguenos en Twitter e infórmanos de ello, es muy probable que también te sigamos

  • Facebook

    Estamos pensando si abrir una página de Facebook o no...

  • LinkedIn

    En breve...

  • Instagram

    En breve...

  • Github

    En breve...