Programación Web » Aprender PHP y MySQL » Unidad 5. Validaciones en PHP:

Tablas de verdad en PHP

logo php

Todos los operadores lógicos evalúan el “valor de verdad” (es decir, si es verdadera o falsa) De cada una de las condiciones por separado y, luego, según el operador utilizado para unir estas condiciones, devuelven un único valor de verdadero o falso para el conjunto completo de condiciones que formaban esa expresión.

Vamos a analizar cuatro operadores lógicos:

• And (conjunción, también puede escribirse en PHP como &&),
• Or ( disyunción, también puede escribirse en PHP como ||), 
• Xor ( disyunción excluyente, informalmente llamado “or excluyente”), 
• !(negación).

Si a las dos condiciones que uniremos mediante operadores lógicos les damos un nombre simbólico y las denominaciones $x e $y, los valores de verdad pueden ser solamente cuatro: 

• Que ambas condiciones sean verdaderas, 
• Que ambas condiciones sean falsas, 
• Que la primera sea verdadera y la segunda falsa,
• Que la primera sea falsa y la segunda verdadera. No hay otra alternativa. Esto puede graficarse con esta tabla:

(Siendo “V” verdadero, y “F” falso). Dependiendo de cual operador utilicemos para unir ambas condiciones, obtendremos distintos resultados al evaluar el conjunto completo. Veamos cual es la “tabla de verdad” para unir condiciones, según cada uno de estos operadores lógicos.

El operador de conjunción es un operador lógico bastante restrictivo, ya que requiere que todas las condiciones que forman parte de la expresión sean verdaderas para que devuelva verdadera la condición completa.

En cualquier otro caso, es decir, con que sólo una de las condiciones sea falsa, la expresión completa se evalúa como falsa.

Veamos un ejemplo con PHP. Supongamos que disponemos de estos datos:

$usuario = "pepe"; 
$clave = 123456;

Y que queremos validarlos con un condicional que evalué si el nombre es “pepe” y la clave es “123456”. Necesitamos que ambos sean verdaderos para dar por verdadera la condición entera y darle acceso a ese usuario, entonces, usaremos un operador de conjunción:

if($nombre == "pepe" and $clave == "123456") {
print ("¡Bien venido pepe!");
} else {
print ("No lo conocemos, disculpe pero queda fuera");
}

Es recomendable que probemos qué sucede cuando proporcionamos valores “falsos” (distintos a los esperados en la condición). Por ejemplo, podríamos cambiar los valores de esas dos variables de esta manera:

$usuario = "Juan";
$clave = 123456;

En ese caso, se evaluaría como falsa la condición, ya que la primera condición (que $nombre valga “pepe”) se evalúa como falsa, así que, por más que la segunda sea verdadera, al haber unido ambas con un operador de conjunción and, la condición entera se evalúa como falsa.

Del mismo modo, podríamos volver a cambiar los valores de esas dos variables, esta vez a algo como.

$usuario = "Pepe";
$clave = 99999;

Y también en este caso, se evaluaría como falsa la condición, ya que la primera condición es verdadera, pero la segunda es falsa.

Desde ya que también se evaluaría como falsa si ambas partes fueran falsos (tanto el nombre como la clave).

El operador de disyunción, contrariamente al anterior, es un operador lógico bastante amplio, ya que considera que la expresión es verdadera si al menos una de las condiciones que forma parte de la expresión es verdadera.

La única forma de que una disyunción resulte falsa es que todas las condiciones sean falsas, sin excepción.

Veamos un ejemplo con PHP, imaginemos que un sitio de comercio electrónico realiza envíos a domicilio solamente en tres ciudades: ciudad 1, ciudad 2 y ciudad 3; solicitamos al usuario que ingrese su ciudad de residencia en un campo llamado “ciudad”, y evaluemos ese dato. Necesitamos que al menos uno de esos tres nombres de ciudad sea el que verdaderamente ingreso el usuario para dar por verdadera la condición entera, y realizar el pedido. Entonces, usaremos un operador de disyunción:

if ($_POST["ciudad"] == "ciudad 1" or $_POST["ciudad"] == "ciudad 2" or $_POST["ciudad"] == "ciudad 3"){

print ("¡Zona correcta! Recibira su pedido.");
} else {
print ("Esta fuera del área de cobertura.");

}

Nuevamente, es recomendable que probemos cambiando los valores esperados, y que veamos que sucede cuando proporcionamos valores falsos o uno de los verdaderos. En el caso de una disyunción, con que proporcionaremos un solo de los valores correctos, se evaluara como correcta la expresión.

La diferencia con el operador de la disyunción común es que si ambas condiciones son verdaderas, devuelve falso.

Supongamos que disponemos de estos datos proporcionados en un pedido:

$tarjeta = "VISA";
$cupon = "19876";

Y que queremos validarlos con la regla de que si paga con tarjeta VISA, no se considera ningún cupón de descuento. Por el contrario, si ingresa un cupón de descuento, la forma de pago no puede ser VISA. Son excluyentes:

if ($tarjeta == "VISA" xor $cupon <> ""){
print ("Podemos tomar su pedido");
} else {
print ("No puede elegir VISA y a la vez colocar un código de cupón de descuento, y tampoco puede elegir otro medio de pago sin ingresar un código de cupón.");
}

El operador de negación transforma la expresión en su contrario. Es decir, si la condición es verdadera, devuelve falso, y si la condición es falsa, devuelve verdadero.

Ya hemos utilizado este operador en otros casos, como por ejemplo en:

if ($_POST["nombre"] != "Pepe" {
print ("No sos Pepe");

}

Devuelve verdadero si nombre no es igual a “Pepe”.
Resumamos, entonces, en un cuadro, los distintos operadores lógicos:

Habiendo comprendido el funcionamiento de los condicionales y de los operadores de comparación y lógicos, ya estamos listos para realizar distintas validaciones en nuestros códigos.

Artículos de navegación

Acerca del Profesor

Adrián Delgado Rodríguez

Ingeniero en Computación, docente por convicción y apasionado por la programación Web.

Actualmente trabaja como Profesor para en el Centro Universitario de la Costa de la Universidad de Guadalajara y como Desarrollador Web.

Síguenos:

 

Ver el perfil completo de Hugo Adrián Delgado Rodríguez (akus.net).

Deja un comentario





Diseño de páginas Web en Puerto Vallarta y Bahía de Banderas akus.net
subir

Síguenos en Facebook

Artículo de la semana

Cómo iniciar una página WebMetodología para la creación de sitios

Comprende las fases de Análisis, Planificación, Contenido, Diseño. ¿Qué método utilizas?