En nuestra primera entrega, les he dado una introducción a lo que es PHP y los preparativos del ambiente de programación. También los he guiado a través de las variables y les enseñé cómo sumarlas, multiplicarlas y concatenarlas.
Ahora que sabes lo básico, es tiempo mi padawan de enfocarnos en lo interesante - la capacidad de PHP de obtener datos de un formulario y volcarlos en variables.
Formularios...:
Los formularios son el camino más rápido para añadir esa interactividad que deseas tener con el usuario. Un formulario permite consultar a tus clientes sobre productos, hacer que los visitantes casuales califiquen tu sitio y claro el más importante para que las chicas bonitas te dejen su correo y número telefónico. Y PHP puede simplificarte la tarea de procesar datos desde un formulario web. Como primer ejemplo haremos dos scripts; uno en html (formulario.html) que contendrá al formulario y el otro php (respuesta.php) que contendrá el manejo PHP.
<html><head></head>
<body>
<form id="mensaje" method="post" action="respuesta.php">
<fieldset>
<legend>Espacio de los controles</legend>
<dl>
<dt><label for="mensaje">Ingresa un mensaje:</label></dt>
<dd><input type="text" name="mensaje" size="30" maxlength="40" /></dd>
</dl>
</fieldset>
<fieldset>
<input type="submit" name="enviar" id="enviar" value="Procesar" />
</fieldset>
</form>
</body>
</html>Nada del otro mundo en realidad, ten muy pero muy en cuenta la línea de declaración del formulario
Como probablemente ya lo hayas investigado, id es para especificar el nombre del formulario, method es para indicar el método de envío de variables y action especifíca el nombre del script del lado del servidor que procesará la información ingresada en el formulario.
...y su utilidad:
Ahora vamos por la otra pieza de este rompecabezas, el script respuesta.php; lo que hace este script es recibir los datos del formulario y procesarlos (osea hacer algo con ellos).
<?php//recibimos los datos
$entrada = $_POST['mensaje'];
//los imprimimos
echo "Tu mensaje fue: $entrada";
?>Cuando ingresas data en tu formulario.html (digamos un "aloha colorada"), y presionas el botón, el script respuesta.php lo procesará y te mostrará "Tu mensaje fue: aloha colodara". Todas las variables que salen de un formulario hacia un script PHP son almacenadas y preparadas para ser utilizadas mediante un contenedor llamado $_POST, y puedes acceder a su valor tal y como lo he hecho en el ejemplo.
Obviamente PHP también admite GET, lo único que debes hacer es cambiar el método de envío de variables de post a get y llamarlas como $_GET en lugar de $_POST. Bueno no te preocupes mucho ni te compliques en este punto debemos estar felices enviando y recibiendo los valores.
Operando con extremo cuidado:
Hasta ahora todos los scripts que hemos revisado son muy tontos, lo único que hacen es sumar números o mostrar información que ya conocemos y que de hecho nosotros la ingresamos, no podemos llamarlos exactamente "poderosos". Para agregar algo de "inteligencia" a nuestros scripts necesitamos utilizar algo que los entendidos llaman "condicionales".
Ya hemos visto algunos operadores aritméticos y de cadenas en PHP, vamos ahora a ver los operadores condicionales:
<?php//definimos algunas variables
$fin = 4;
$medio = 10;
$modo = 4;
//menor que
//retorna verdadero si el valor de la izquiera es menor que la derecha
//en este caso nos dá verdadero
$resultado = ($fin < $medio);
print "El resultado es $resultado<br />";
//mayor que
//retorna verdadero si el valor de la izquierda es mayor que la derecha
//ahora nos debe dar falso
$resultado = ($fin > $medio);
print "El resultado es $resultado<br />";
//menor o igual que
//retorna verdadero en caso el valor de la izquierda sea menor o igual al de la derecha
//es falso en este caso
$resultado = ($medio <= $fin);
print "El resultado es $resultado<br />";
//mayor e igual que
//retorna verdadero si el valor de la izquierda es mayor o igual al de la derecha
//aquí retorna verdadero
$resultado = ($medio >= $fin);
print "El resultado es $resultado<br />";
//Operador de Igualdad
//retorna verdadero si el valor de la izquierda es igual al de la derecha
//retorna verdadero en este caso
$resultado = ($modo == $fin);
print "El resultado es $resultado<br />";
//Operador no es igual
//retorna verdadero si el valor de la izquierda no es igual al de la derecha
//retorna falso aquí
$resultado = ($fin != $modo);
print "El resultado es $resultado<br />";
//Operador de desigualdad
//retorna verdadero si los valores son iguales
//retorna falso en este caso
$resultado = ($fin <> $modo);
print "El resultado es $resultado<br />";
?>El resultado de las comparaciones es siempre un booleano (osea 1 si es verdadero y 0 si es falso, caso en el que no mostrará nada). Esto hace que las condicionales sean una parte infaltable en tu maleta de herramientas programáticas.
En PHP 4.0 se introdujo un nuevo operador comparativo que permite indicarnos si las variables llegan con igualdad absoluta, no sólo de valor sino también de tipo; y ese es ===. Probemos el ejemplo:
<?php//definimos dos variables
$cadena = '10';
$entero = 10;
//en el igual retornará verdadero ya que ambas son 10
$resultado = ($cadena == $entero);
print "El resultado es: $resultado<br />";
/*retornará falso porque las variables no tienen el mismo tipo, incluso cuando
* tienen el mismo valor
*/
$resultado = ($cadena === $entero);
print "El resultado es: $resultado<br />";
//definimos una variable adicional
$otroentero = 10;
//resulta verdadero ya que ambas variables son idénticas
$resultado = ($entero === $otroentero);
print "El resultado es: $resultado<br />";
?>Puedes leer más de estos operadores en: http://www.php.net/manual/en/language.operators.comparison.php.
Porque lo dice la lógica:
Además de los operadores que ya hemos visto, PHP nos ofrece 4, sí cuatro operadores lógicos; vamos a ilustrar estos cuatro operadores (AND, OR, NOT y XOR):
<?php
/*definamos variables*/
$autor = 1;
$estado = 1;
$rol = 4;
/*El AND retorna verdadero si todas las cláusulas son verdaderas*/
//retorna verdadero
$resultado = (($autor == 1) && ($rol != 2));
echo "El resultado es $resultado<br />";
/*El OR retorna verdadero si al menos una de las cláusulas es verdadera*/
//retorna verdadero
$resultado = (($estado == 1) || ($rol >= 2));
echo "El resultado es $resultado<br />";
/*el NOT retorna verdadero si la condición es falsa y viceversa*/
//retorna falso
$resultado = !($estado == 1);
echo "El resultado es $resultado<br />";
/*el XOR retorna verdadero si alguna condición es verdadera pero false si ambas lo son*/
//retorna falso
$resultado = (($autor ==1) xor ($rol == 4));
echo "El resultado es $resultado<br />";
?>Los operadores lógicos tienen un rol importante en la construcción de las condicionales. Puedes revisar más de este tema en: http://www.php.net/manual/en/language.operators.logical.php.
Más viejo pero no más sabio:
Ahora que ya has aprendido todo acerca de las comparaciones y de los operadores lógicos, te enseñaré acerca de las "condicionales" que no son más que código que determina si una acción se realiza o no de acuerdo a una cláusula comparativa, en PHP el más conocido es if(). Y luce algo así:
if(condicional){
Acá es donde debe realizar algo...
}
Haber el argumento de if() es una condicional que es evaluada con "verdadero o falso" de acuerdo al resultado si es verdadero, realizará las líneas de código contenidas dentro de las llaves, si es falso, hará como si esas líneas no existieran y seguirá con la ejecución del programa de forma regular.
Veamos en un ejemplo con un formulario cómo funcionaría combinándola con un formulario:
//edad.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Ingreso a nuestro CLUB</title>
</head>
<body>
<form id="ingreso" method="post" action="edad.php">
<fieldset>
<legend>Ingrese su edad por favor</legend>
<dl>
<dt><label for="edad">EDAD:</label></dt>
<dd><input type="text" name="edad" /></dd>
</dl>
</fieldset>
<fieldset>
<input type="submit" name="Enviar" value="PROBAR"/>
</fieldset>
</form>
</body>
</html>El script evaluará la edad que tengas y te dará la bienvenida... o no:
//edad.php
<?php
//recuperamos la data
$edad = $_POST['edad'];
//la evaluamos
if($edad >= 18){
echo "Adelante, tenemos mucha diversión, alcohol y música esperándote dentro";
}
if($edad < 18){
echo "Lo sentimos pero eres muy joven para entrar, vuelve con tu mayoría de edad";
}
?>Y si no es eso?, entonces qué?:
Además de la cláusula if(), PHP ofrece un complemento en la cláusula if-else. Con esto podemos definir un bloque de código que se ejecutará en caso la condicional del if() sea flasa.
Se ve algo como esto:
if(condicional){
Hago algo...
}else {
Hago todo lo contrario...
}
Podemos usarla en el ejemplo anterior para juntar nuestros dos if().
<?php
//recuperamos la data
$edad = $_POST['edad'];
//la evaluamos
if($edad >= 18){
echo "Adelante, tenemos mucha diversión, alcohol y música esperándote dentro";
}
else{
echo "Lo sentimos pero eres muy joven para entrar, vuelve con tu mayoría de edad";
}
?>Propagando la confusión:
Haber si eres de aquellos que les encanta ver la cara de preocupación y poco entendimiento de las personas que ven tu código entonces esto te gustará.
El ejemplo anterior definido por:
<?php
//recuperamos la data
$edad = $_POST['edad'];
//la evaluamos
if($edad >= 18){
echo "Adelante, tenemos mucha diversión, alcohol y música esperándote dentro";
}
else{
echo "Lo sentimos pero eres muy joven para entrar, vuelve con tu mayoría de edad";
}
?>Lo podemos reemplazar por esto, que es equivalente (pero un poco más divertido):
<?php
//recuperamos la data
$edad = $_POST['edad'];
//la evaluamos
$mensaje = $edad >= 18? "Adelante, tenemos mucha diversión, alcohol y música esperándote dentro": "Lo sentimos pero eres muy joven para entrar, vuelve con tu mayoría de edad";
echo $mensaje;
?>PHP además nos permite "anidar" las condicionales una dentro de otra, como esto:
<?php
if($dia == 'jueves')
{
if($hora == '20:00')
{
if($lugar == 'Parque Lambramani')
{
$comida = 'BK barbecue y un Sundae';
}
}
}
?>Una forma más elegante de escribirlo es la siguiente:
<?php
if($dia == 'jueves' && $hora == '20:00' && $lugar == 'Parque Lambramani')
{
$comida = 'BK barbecue y un Sundae';
}
?>Y así las cosas que definitivamente no harás:
Pero y si queremos que evalúe muchas condicionales como resultado de una anterior, tendremos que considerar muchos if-else? - pues NO, para eso tenemos la cláusula if-elseif-else para mejorar el trabajo, una cláusula de esas se vería así:
if(condicional){
Haces algo que cumpla la condición...
}
elseif (condicional){
Haces algo ...
}
else {
Haces lo que harías si ninguna es cumplida ...
}
Y bueno acá el ejemplo que demuestra su uso:
//tareas.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Tareas del día</title>
</head>
<body>
<form id="tarea" method="get" action="tarea.php">
<fieldset>
<legend>Escoge el día</legend>
<dl>
<dt><label for="dia">DIA:</label></dt>
<dd><select name="dia">
<option value="1">Lunes/Miércoles
<option value="2">Martes/Jueves
<option value="3">Viernes/Sábado
<option value="4">Domingo
</select>
<input type="submit" name="ingresar" value="consultar"/></dd>
</dl>
</fieldset>
</form>
</body>
</html>Como ven es un formulario muy simple que nos permite seleccionar un par de días, el trabajo en realidad como siempre lo hace nuestro script:
//tarea.php
<?php
//recuperamos la variable
$dia = $_GET['dia'];
//hacemos la comparación
if($dia==1){
$tarea = 'Practicar PHP';
}
elseif($dia==2){
$tarea = 'Ir a jugar Basquet';
}
elseif ($dia ==3){
$tarea = 'Ir a la playa';
}
else{
$tarea = 'Actualizar el Facebook';
}
echo "<p><H2>La tarea de hoy es:</H2></p>";
echo "<p>$tarea</p>";
?>En este ejemplo hemos utilizado la estructura if-elseif-else; pero ahora debes saber los siguiente: ni bien PHP encuentre un bloque verdadero, ejecuta las líneas dentro de ese bloque saltándose todos los demás bloques.
Y bueno mi buen drunken PHP apprentice este fue tu lvl 1; si deseas saber más de las condicionales, te recomiendo revisar http://www.php.net/manual/en/language.control-structures.php.
Prometo más ejemplos y ejercicios además de cubrir otras estructuras un poquito más complejas, como para un lvl 2; no te lo pierdas y comenta que así da ánimo de continuar las actividades :D.
Y la siguiente parte??
ResponderEliminar