Sei sulla pagina 1di 3

Operadores condicionales

Operadores condicionales
El operador if

Este tipo de operadores son el <?


auténtico cerebro de cualquier # Definamos dos variables y lasignémosles valores.
aplicación que desarrollemos en # Hubieran podido obteners por cualquier otro procedimiento:
PHP o en cualquier otro lenguaje # desde un array,
de programación. # a través de un formulario cuya action ejecute este script, etc.

Los operadores condicionales son $A=3; $B="3";


la herramienta que permite tomar if ($A==$B)
decisiones tales como: hacer o no
print ("A es igual B");
hacer, y también: hacer algo bajo
determinadas condiciones y otra
cosa distinta en caso de que no se # cualquier otra instrucción que incluyeramos de aqui
cumplan. # en adelante se ejecutaría independientemente de que la condición
# se cumpla ó no ya que esta forma de if (sin llaves)
# unicamente considera la primera instrucción
Condiciones # comprobémoslo en este otro supuesto

Aunque para simplificar los if ($A<$B)


ejemplos vamos a utilizar en ellos print ("A es menor que B");
una sola condición, este operador print("<br>A no es menor que b, pero esto saldrá<br>");
permite incluir como tal cualquier
print("Esta es la segunda instrucción. No la condicionará el if");
estructura lógica, del tipo que
?>
hemos visto en la página anterior,
por compleja que esta sea.
ejemplo24.php
Alternativas de sintaxis

Como iremos viendo a lo largo de <?


estas líneas, este operador permite $A=3; $B="3";
diferentes formas de sintaxis que # en este caso cerraremos entre llaves las lineas
podemos utilizar según nuestra # que deben ejecutarse si se cumple la condición
conveniencia.
if ($A==$B){
La forma más simple es: print ("A es igual B");
if(condición) echo "<br>";
..instrucción... ; echo "Este if tiene varias instrucciones contenidas entre
llaves";
Si se cumple la condición }
establecida en el paréntesis se # una sintaxis alternativa a las llaves
ejecutará la primera instrucción # sustituyamos la { por : y la } por endif
que se incluya a continuación de if ($A==$B):
ella.
print ("A es igual B");
Cualquier otra instrucción que echo "<br>";
hubiera a continuación de esa echo "Hemos cambiado {} por : endif";
primera no estaría afectada por el endif;
condicional y se ejecutaría en ?>
cualquier circunstancia.

Observa que, aunque hemos ejemplo25.php


puesto if(condición) en una línea
independiente, no lleva punto y
coma detrás. <?
if(condición){ $a=5;
..instrucción 1... ; # observa que ponemos la etiqueta de fin de script
..instrucción 2... ; # después de la llave de apertura
.... ; if ($a==5){ ?>
} <!-- Aquí estamos poniendo HTML puro
no estamos dentro del script PHP //-->
Es una ampliación del caso <H1>Esto no ha sido interpretado por PHP</H1>
anterior. Cuando es necesario que
–en caso de que se cumpla la
<!-- en la linea siguiente a este comentario
condición o condiciones– se
ejecute más de una instrucción, se
volveremos a PHP para insertar la llave que indica el fin del if //-->
añade una { para indicar que <? } ?>
habrá varias instrucciones, se
escriben estas y mediante } se <?
señala el final. # hagamos lo mismo cambiando {} por : endif
if ($a==5): ?>
if(condición) : <!-- Aquí estamos poniendo HTML puro
..instrucción 1... ; no estamos dentro del script PHP //-->
..instrucción 2... ;
<H2>Esto tampoco sido interpretado por PHP</H2>
.... ;
endif;
<!-- en la linea siguiente a este comentario
Esta otra forma del condicional se volveremos a PHP para insertar la llave que indica el fin del if //-->
comporta como la anterior pero <? endif; ?>
con otra sintaxis. Se sustituye la
{ de apertura por : y la } de cierre
por endif
ejemplo26.php
if(condicion){ ?>
..Etiquetas HTML... ;
..HTML... ; La estructura if ... else
.... ;
<? } ?>
<?
PHP permite la utilización del $A=3; $B="4";
operador condicional if con esta if ($A==$B){
sintaxis. Una primer script PHP
#estas instrucciones se ejecutarian si se cumple la condición
establece la condición. Todo lo print ("A es igual B");
contenido entre ese primer script y
echo "<br>";
el de cierre: <?}?> será código
echo "Este if tiene varias intrucciones";
HTML (está fuera del script), que
se insertará en el documento sólo }else{
en el caso de que se cumpla la # estas se ejecutarian en el caso de no cumplirse
condición. # las condiciones epecificadas en el fi
print("A no es igual que B");
if(condicion) : ?> echo "<br>";
..Etiquetas HTML... ; echo ("La estructura de control se ha desviado al else");
..HTML... ; }
.... ;
<? endif; ?>
?>
Idéntica a la anterior, con la
sintaxis : , endif.
ejemplo27.php

If ... else
<?
El operador condicional tiene una $a=3;
interesante ampliación. En # observa que ponemos la etiqueta de fin de script
conjunción con else permite # después de los dos puntos
añadir instrucciones que sólo if ($a==5): ?>
serían ejecutadas en caso de no <!-- Aquí estamos poniendo HTML puro
cumplirse la condición. no estamos dentro del script PHP //-->
Esta nueva opción se habilita <H1>Esto no es PHP. A es igual 5</H1>
mediante la siguiente sintaxis:
<!-- en la linea siguiente a este comentario
if(condicion){ volveremos a PHP para insertar el else seguido de dos puntos
... instrucciones... y cerramos de nuevo el script con ?>//-->
... a ejecutar cuando <? else: ?>
se cumple la condición
} else {
<!-- Aquí más HTML para el (else)
... instrucciones...
caso de que no se cumpla la condición //-->
... a ejecutar cuando NO
se cumple la condición <H2>Esto no es PHP. Es el resultado del ELSE</H2>
}
<!--
permitiendo también la sintaxis volveremos a PHP para insertar en endif que indica el fin del if //-->
alternativa :, endif, aunque en <? endif; ?>
este caso hay que hacer una
precisión -puedes verla aquí
debajo– la llave de cierre que iba
delante de else se elimina y no es ejemplo28.php
sustituida por ningún caracter ni
símbolo especial.
El operador condicional ternario
<?if(condicion): ?>

... código HTML <? $a=5;


... a ejecutar cuando ($a==8) ? ($B="El valor de a es 8"): ($B="El valor de a no es 8");
se cumple la condición echo $B;
?>
<? else: ?>

... codigo HTML... Ejemplo con a=8 Ejemplo con a=5


... a ejecutar cuando NO
se cumple la condición
La estructura if ... elseif... else
<? endif; ?>

En algunos casos resulta útil y <? $a=1;


cómodo el uso de esta otra if ($a==1){
posibilidad de sintaxis: echo "El valor de la variable A es 1";
}elseif ($a==2){
(condición) ? (opc1) : (opc2) echo "El valor de la variable A es 2";
Si se cumple la condición se }elseif ($a==3){
ejecuta la opc1, pero en el caso echo "El valor de la variable A es 3";
de que no se cumpla se ejecutará }else{
la opc2. echo "La variable A no es 1, ni 2, ni 3";
}
?>
If ... elseif .. else

Otra posibilidad dentro de la Ejemplo con a=3 Ejemplo con a=-7


estructura de los operadores
condicionales es la inclusión de
elseif. <? $a=1;
if ($a==1): ?>
Esta es la sintaxis. (Dentro de ella
tienes los comentarios
<H1>A es igual a 1</H1>
explicativos). <? elseif($a==2): ?>
<H1>A es igual a 2</H1>
if(condicion1){ <? elseif($a==3): ?>
<H1>A es igual a 3</H1>
... instrucciones... <? else: ?>
... a ejecutar cuando
<H1>A no es igual ni a 1, ni a 2, ni a 3</H1>
se cumple la condición1
<? endif;
}elseif(condicion2){ ?>

... instrucciones...
... a ejecutar cuando Ejemplo con a=2 Ejemplo con a=8
se cumple la condición2
sin cumplirse condición1

} else { Ejercicio nº 19

... instrucciones... Diseña un formulario –ejercicio19a.php- con un input tipo texto en el que puedas escribir
... a ejecutar cuando NO números. Al pulsar el botón de enviar debe llamar a un script –ejercicio19b.php- que debe
se cumple ni la condición1
decirnos si el número enviado fue: positivo, cero o negativo.
ni la condicion2
A la página ejercicio19b.php añádele un enlace HTML que permita volver a la página
} anterior.

Condicionales anidados

El anidado no es otra cosa que el Ejercicio nº 20


equivalente a los paréntesis dentro
de paréntesis en las matemáticas. En el ejercicio nº 10 –puedes verlo pulsando aquí– diseñaste un cuestionario en el que
Y este operador lo permite, con formulabas dos preguntas. Utilizando un formulario similar, pero únicamente con la primera
una única condición, que verás en
esta muestra de sintaxis.
pregunta –puedes modificarlo y guardarlo como ejercicio20a.php– debes crear un script de
modo que al recibir el formulario muestre en pantalla «Respuesta correcta» ó «Respuesta
if(condición1){ incorrecta».
... instrucciones... Como es lógico, en ese script –puedes llamarlo ejercicio20b.php– debes incluir en una
if(condición2){ variable el valor de la respuesta correcta y compararla con la recibida a través del
... instrucciones...
formulario.
} else {

...instrucciones
}

}else{ Ejercicio nº 21
... instrucciones...
...instrucciones... Amplía el ejercicio anterior a las dos preguntas que se formulaban en el nº10. Ahora
} deberíamos saber si ha sido correcta o no la respuesta a cada una de las preguntas.
Puedes llamar ejercicio21a.php y ejercicio21b.php a los documentos que crees para este
Observa que todo el bloque if..
else... marcado en azul se cierra ejercicio.
antes de abrir la opción else
marcada en marrón. Es
obligatorio que así sea. De igual
forma, podríamos insertar bloques Restringir accesos
sucesivos hasta llegar a crear una
estructura tan amplia como fuera Las variables predefinidas $_SERVER['HTTP_REFERER'] (en el caso de PHP 4.1.0 o
necesaria. superior) y $HTTP_SERVER_VARS['HTTP_REFERER'] (en todos los casos) recogen la
ruta completa de la página desde la que hemos accedido a la actual.
Como ves, todo un mundo de
posibilidades.
<?
Una aplicación # el condicional if estable como condición
a la seguridad # que el acceso a este script proceda de la direccion indicada
# en este caso hemos puesto como condición que ese valor
En páginas anteriores hemos # sea la dirección de esta página
hecho algunas alusiones a la if($_SERVER['HTTP_REFERER']=="http://localhost/cursoPHP/php37.php"){
seguridad. # si accedemos desde esta página, el enlace que tienes aqui debajo
# veremos que aparece este print, es decir se visualizaría todo
Decíamos que los envíos de
# lo contenido antes del else
información por medio de los
formularios no eran seguros print "ejecuto sin problemas el script";
porque, dada la transparencia de }else{
su código, pueden ser # si accedes desde un sitio diferente te aparecerá este mensaje
reproducidos y utilizados desde # puedes probar escribiendo en tu navegador
cualquier otro sitio distinto a # http://localhost/cursoPHP/ejemplo35.php
nuestro servidor. # y comprobarás que aparece este mensaje
"No puedes ver esta pagina";
Una sencillo condicional puede
exit;
resolver ese problema. Lo puedes
}
ver en el ejemplo que tienes aquí a
la derecha. ?>

La función exit()
PHP dispone de una función exit()
ejemplo35.php
muy útil a los efectos del
comentario anterior. Anterior Indice Siguiente

Cuando se ejecuta exit() se


interrumpe la ejecución del script
con lo que la respuesta del
servidor a la petición del cliente
incluirá únicamente los contenidos
generados antes de su ejecución.

Potrebbero piacerti anche