El condicional if y los valores boolean - Curso de PHP y MySQL - Capítulo 12

Entramos ya en un tema muy interesante, las estructuras de control. En concreto, los condicionales.

¿Qué es el condicional if?

El condicional if es una estructura de control de flujo que nos permite hacer que se tomen decisiones en determinados casos. Es una forma de "inteligencia" para nuestro código.

Pseudocódigo PHP

<?php
	if (expresión) {
		// Código a ejecutar
	}
?>

Parece simple ¿no? La verdad es que se puede complicar bastante, pero no te preocupes aún queda para eso.

Vamos a crear un pequeño código que sea capaz de comparar dos números introducidos por el usuario y que diga si el primero es mayor que el segundo.

Ya sé que esto es absurdo, pero es una buena forma para que entiendas el uso de if.

Partimos del siguiente formulario html:

Código PHP

<!doctype html>
<html>
<head>
	<meta charset="utf-8">
	<title>Curso de PHP y MySQL</title>
	<link rel="stylesheet"
	href="https://cdn.jsdelivr.net/npm/bootstrap@4.3.1/dist/css/bootstrap.min.css"
	integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"
	crossorigin="anonymous">
</head>
<body style="margin:1em">

	<form class="form-horizontal" method="post">
		<fieldset>

			<!-- Título del formulario -->

			<legend style="margin:0.6em">Comparador INÚTIL de números</legend>

			<p>Introduce dos números y te diré cual es el mayor.</p>

			<!-- Nombre -->
			<div class="form-group">
				<label class="col-md-4 control-label" for="numero1">Número 1</label>
				<div class="col-md-4">
					<input id="numero1" name="numero1" type="text"
					placeholder="Escribe un número"
					class="form-control input-md" required="">
				</div>
			</div>

			<!-- Apellidos -->
			<div class="form-group">
				<label class="col-md-4 control-label" for="numero2">Número 2</label>
				<div class="col-md-4">
					<input id="numero2" name="numero2" type="text"
					placeholder="Escribe un número"
					class="form-control input-md" required="">
				</div>
			</div>

			<!-- Botón de envío -->
			<div class="form-group">
				<label class="col-md-4 control-label" for="comparar"></label>
				<div class="col-md-4">
					<button id="comparar" name="comparar"
					class="btn btn-success">Comparar</button>
				</div>
			</div>

		</fieldset>
	</form>

	<div style="margin-left:1em">
		<?php
			// Escribe el código PHP aquí.
		?>
	</div>
</body>
</html>

Evitar el aviso del reenvío de la caché en PHP

Te dejo un pequeño código JavaScript que va a evitar que el navegador reenvíe los datos de la caché. Así, cuando recargas la página, no envía los datos de nuevo. Colócalo en el <head> del documento o bien en una página externa.

Código JavaScript

<script>
if (window.history.replaceState) {
	window.history.replaceState(null, null, window.location.href);
}
</script>

Aquí tienes el código php:

Código PHP

$numero1 = $_POST["numero1"]?? null;
$numero2 = $_POST["numero2"]?? null;

if ($numero1 > $numero2) {
	echo $numero1." es mayor que ".$numero2;
}

Lo primero que tenemos es la palabra if que se utiliza para crear el condicional. Seguido, vienen unos paréntesis con la expresión. Esta expresión está comparando los dos números. Lo hace con el operador de comparación > mayor qué.
Dentro de las llaves, escribiremos cuanto código queramos que se ejecute en el caso de que la expresión se cumpla.

En resumen, lo que dice esa expresión es que se ejecute el código del if solo si el valor de $numero1 es mayor que el de $numero2.

Vamos a hacer una prueba en el navegador. Si introducimos por ejemplo un 10 en $numero1 y un 15 en $numero2, la expresión del if no se cumple y por lo tanto, no se ejecuta su mensaje.

En cambio, si ponemos un valor mayor a $numero1 que el de $numero2, sí que se muestra el mensaje.

Condicional if en PHP

Ahora, hagamos el mismo procedimiento pero con el operador opuesto, el menor qué <. Vamos a añadir un segundo if que contemple la posibilidad de que el segundo número sea mayor. Hay mejores formas de hacer esto, pero lo verás en otro capítulo.

Código PHP

$numero1 = $_POST["numero1"]?? null;
$numero2 = $_POST["numero2"]?? null;

if ($numero1 > $numero2) {
	echo $numero1." es mayor que ".$numero2;
}

if ($numero1 < $numero2) {
	echo $numero1." es menor que ".$numero2;
}

Ahora, con por ejemplo un valor de 10 para $numero1 y un valor de 15 para el otro número, nuestro código es más listo y nos sabrá decir que 10 es menor que 15.

Resultado en el navegador

10 es menor que 15

Otra posibilidad que podemos contemplar, es la de dos valores iguales. En este caso, utilizaremos el operador ==, que representa igual. Un solo = se utiliza para asignar valores, no para comparar iguales.

Código PHP

$numero1 = $_POST["numero1"]?? null;
$numero2 = $_POST["numero2"]?? null;

if ($numero1 > $numero2) {
	echo $numero1." es mayor que ".$numero2;
}

if ($numero1 < $numero2) {
	echo $numero1." es menor que ".$numero2;
}

if ($numero1 == $numero2) {
	echo $numero1." es igual que ".$numero2;
}

El tipo de dato boolean

Llegados a este punto, es necesario que conozcas ya el cuarto tipo de los escalares, boolean (conocidos como booleanos en español) con esto, ya habrás utilizado 5 de los 10 tipos de datos de PHP.

Los boolean son tipos de datos con dos posibles valores, true (verdadero) o false.

En el caso de las expresiones condicionales como la del if, se devuelve un valor de tipo boolean. Si la expresión es verdadera, se devuelve un true y el código del if se ejecuta. En cambio, si la expresión es falsa, se devuelve un false y el código del if no se ejecuta, se lo salta y sigue leyendo el resto de líneas en el código.