UD 2 El lenguaje PHP. 6 Formularios
Duración Estimada de la unidad: 12 sesiones, 24 horas
RA2 Escribe sentencias ejecutables por un servidor Web reconociendo y aplicando procedimientos de integración del código en lenguajes de marcas.
- A Se han reconocido los mecanismos de generación de páginas Web a partir de lenguajes de marcas con código embebido.
- B Se han identificado las principales tecnologías asociadas.
- C Se han utilizado etiquetas para la inclusión de código en el lenguaje de marcas.
- D Se ha reconocido la sintaxis del lenguaje de programación que se ha de utilizar.
- E Se han escrito sentencias simples y se han comprobado sus efectos en el documento resultante.
- F Se han utilizado directivas para modificar el comportamiento predeterminado.
- G Se han utilizado los distintos tipos de variables y operadores disponibles en el lenguaje.
- H Se han identificado los ámbitos de utilización de las variables.
RA3 Escribe bloques de sentencias embebidos en lenguajes de marcas, seleccionando y utilizando las estructuras de programación.
- A Se han utilizado mecanismos dedecisión en la creación de bloques de sentencias.
- B Se han utilizado bucles y se ha verificado su funcionamiento.
- C Se han utilizado «arrays» para almacenar y recuperar conjuntos de datos.
- D Se han creado y utilizado funciones.
- E Se han utilizado formularios Web para interactuar con el usuario del navegador Web.
- F Se han empleado métodos para recuperar la información introducida en el formulario.
- G Se han añadido comentarios al código
OBJETIVOS SEMANALES
Instalar Entorno PHP
Crear y compartir Repositorio GitHub
Primeros programas PHP y subir al repositorio
Introducción
En las clases anteriores, estudiamos arrays y algunas de las funciones más importantes. En este apartado, pondremos en práctica muchas de ellas a través de un elemento fundamental en la arquitectura cliente-servidor, los formularios
RA3 : Escribe bloques de sentencias embebidos en lenguajes de marcas, seleccionando y utilizando las estructuras de programación.
C.Ev. E : Se han utilizado formularios Web para interactuar con el usuario del navegador Web.
Elementos básicos de los formularios: ACTION, METHOD...
La forma natural para hacer llegar a la aplicación web los datos del usuario desde un navegador, es utilizar formularios HTML .
Los formularios HTML van
encerrados siempre entre las etiquetas <FORM>
</FORM>
.
Dentro de un formulario se incluyen los elementos sobre los que puede actuar el
usuario, principalmente usando las etiquetas <INPUT>
, <SELECT>
, <TEXTAREA>
y <BUTTON>
.
El atributo action del elemento FORM indica la página a la que se le enviarán los datos del formulario. En nuestro caso se tratará de un guión PHP.
Por su parte, el atributo method especifica el método usado para enviar la información. Este atributo puede tener dos valores:
- get : con este método los datos del formulario se agregan al URI utilizando un signo de interrogación "?" como separador.
- post : con este método los datos se incluyen en el cuerpo del formulario y se envían utilizando el protocolo HTTP.
Como vamos a ver, los datos se recogerán de distinta forma dependiendo de cómo se envíen.
Ejemplo 1
php
Crea una carpeta llamada formularios/Ejemplo1 con dos scripts php llamados form.php y action.php
<form action="accion.php" method="post">
<p>Su nombre: <input type="text" name="nombre" /></p>
<p>Su edad: <input type="text" name="edad" /></p>
<p><input type="submit" /></p>
</form>
//https://www.php.net/manual/es/tutorial.forms.php
Mostrar Información de nuestro formulario HTML (GET y POST)
Cuando se envía un formulario a un script de PHP, la información de dicho formulario pasa a estar automáticamente disponible en el script. Existen algunas formas de acceder a esta información, por ejemplo:
Mostrar información de nuestro formulario action.php
Hola <?php echo htmlspecialchars($_POST['nombre']); ?>.
Usted tiene <?php echo (int)$_POST['edad']; ?> años.
Un ejemplo del resultado de este script podría ser:
Hola José. Usted tiene 22 años.
No hay nada especial en este formulario. Es solamente un formulario HTML sin ninguna clase de etiqueta especial. Cuando el usuario rellena este formulario y oprime el botón de envío, se llama a la página accion.php. En este fichero se podría escribir algo así:
Actividad
Actividad
Crea unformulario HTML llamado formulario1.php para introducir el nombre del alumno y el módulo que cursa, a escoger entre “Desarrollo Web en Entorno Servidor” y “Desarrollo Web en Entorno Cliente”.
Envía el resultado a la página“procesa.php” , que será la encargada de procesar los datos.
Semana3/formularios/formulario1/nombredetuscripts.php
arrays!
Fíjate que si en un formulario web tienes que enviar alguna variable en la que sea posiblealmacenar más de un valor , como es el caso de las casillas de verificación en el ejemplo anterior (se pueden marcar varias a la vez), tendrás que ponerle corchetes al nombre de la variable para indicar que se trata de un array .
HTML
Para no tener problemas al programar en PHP, debes conocer el lenguaje HTML , concretamente los detalles relativos a la creación de formularios web. Puedes consultar esta información por ejemplo en el curso sobre HTML de aulaClic:
https://www.aulaclic.es/html/t_8_1.htm
Procesamiento de la información
En el ejemplo anterior creaste un formulario en una página HTML que recogía datos del usuario y los enviaba a una página PHP para que los procesara. Como usaste el método POST , los datos se pueden recoger utilizando la variable $_POST . Si simplemente los quisieras mostrar por pantalla, éste podría ser el código de "procesa.php":
Si por el contrario hubieras usado el método GET , el código necesario para procesar los datos sería similar; simplemente haría falta cambiar la variable _POST por _GET .
En cualquiera de los dos casos podrías haber usado $_REQUEST
Validación de datos.
Siempre que sea posible, es preferible validar los datos que se introducen en el navegador antes de enviarlos . Para ello deberás usar código en lenguaje Javascript.
Si por algún motivo hay datos que se tengan que validar en el servidor, por ejemplo, porque necesites comprobar que los datos de un usuario no existan ya en la base de datos antes de introducirlos, será necesario hacerlo con código PHP en la página que figura en el atributo action del formulario.
En este caso, una posibilidad que deberás tener en cuenta es usar la misma página que muestra el formulario como destino de los datos. Si tras comprobar los datos éstos son correctos, se reenvía a otra página. Si son incorrectos, se rellenan los datos correctos en el formulario y se indican cuáles son incorrectos y por qué.
Para hacerlo de este modo, tienes que comprobar si la página recibe datos (hay que mostrarlos y no generar el formulario), o si no recibe datos (hay que mostrar el formulario). Esto se puede hacer utilizando la función isset con una variable de las que se deben recibir (por ejemplo, poniéndole un nombre al botón de enviar y comprobando sobre él). En el siguiente código de ejemplo se muestra cómo hacerlo.
php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd">
<!-- Desarrollo Web en Entorno Servidor -->
<!-- Tema 2 : Características del Lenguaje PHP -->
<!-- Ejemplo: Procesar datos en la misma página que el formulario -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Desarrollo Web</title>
</head>
<body>
<?php
if (isset($_POST['boton_enviar'])) {
$nombre = $_POST['nombre'];
$modulos = $_POST['modulos'];
print "Nombre: ".$nombre."<br />";
foreach ($modulos as $modulo) {
print "Modulo: ".$modulo."<br />";
}
}
else {
?>
<form name="input" action="<?php $_SERVER['PHP_SELF'];?>" method="post">
Nombre del alumno: <input type="text" name="nombre" /><br />
<p>Módulos que cursa:</p>
<input type="checkbox" name="modulos[]" value="DWES" />
Desarrollo web en entorno servidor<br />
<input type="checkbox" name="modulos[]" value="DWEC" />
Desarrollo web en entorno cliente<br />
<br />
<input type="submit" value="Enviar" name="boton_enviar"/>
</form>
<?php
}
?>
</body>
</html>
PHP_SELF
Fíjate en la forma de englobar el formulario dentro de una sentencia else para que sólo se genere si no se reciben datos en la página. Además, para enviar los datos a la misma página que contiene el formulario puedes usar $_SERVER['PHP_SELF'] para obtener su nombre; esto hace que no se produzca un error aunque la página se cambie de nombre.
¿Empty, checked, in_array?
Para que el usuario no pierda, después de enviar el formulario, los datos correctamente introducidos, utiliza el atributo value en las entradas de texto (utilizamos la función isset para comprobar que la variable que queremos mostrar existe, para que no nos muestre un mensaje de error si es la primera vez que se carga la página y todavía no ha enviado nada el formulario):
Y el atributo checked en las casillas de verificación:
Fíjate en el uso de la función in_array para buscar un elemento en un array.
Para indicar al usuario los datos que no ha rellenado (o que ha rellenado de forma incorrecta), deberás comprobar si es la primera vez que se visualiza el formulario, o si ya se ha enviado. Se puede hacer por ejemplo de la siguiente forma:
Revisa el documento con el ejemplo completo, fijándote en las partes que hemos comentado anteriormente y coménta o envía los mensajes pertinentes en el código
Otra forma de enviar información de una página PHP a otra, es incluyéndola en campos ocultos dentro de un formulario. (enlace a artículo y ejemplo)
Mapa Conceptual
Actividad Entregable
Entregable
Tienes la info en la sección "Actividad entregable"