You are on page 1of 4

Curso de Extensión Universitaria

Desarrollo de sitios web


con PHP y MySQL

Práctica 13: Sesiones

La figura 1 muestra un formulario para realizar una consulta a la base de datos


de viviendas de la inmobiliaria Lindavista. En este formulario aparecen de una
vez todas las características que el usuario puede seleccionar para realizar la
búsqueda de la vivienda.

Figura 1: Formulario de búsqueda completo

Se pretende modificar este formulario dividiéndolo en varios formularios


sucesivos para crear un asistente que vaya pidiendo los datos de uno en uno y
al final muestre los resultados de la búsqueda. En concreto, el asistente irá
preguntando lo siguiente en cada paso:
• Paso 1: tipo de la vivienda
• Paso 2: zona de la vivienda
• Paso 3: número de dormitorios y rango de precio de la vivienda
• Paso 4: características extra de la vivienda

Las figuras 2 a 5 muestran los distintos pasos del asistente, mientras que la
figura 6 muestra el resultado de la consulta.
Figura 2: Paso 1 del asistente

Figura 3: Paso 2 del asistente

Figura 4: Paso 3 del asistente

Figura 5: Paso 4 del asistente


Figura 6: Resultados de la búsqueda

Hay que crear en total 4 formularios. Cada uno de ellos sigue el esquema del
formulario de PHP con sus tres partes conocidas: (a) validar formulario, (b)
procesar formulario y (c) mostrar formulario.

Los formularios 1, 2 y 3 son iguales, con la excepción de los elementos de


entrada que contienen. La parte (b) de los tres consiste en avanzar al paso
siguiente del asistente, cargando el formulario correspondiente. Ello se hace
mediante la siguiente instrucción de PHP (se muestra la que corresponde al
formulario 1):
header ("Location: busca_vivienda_2.php");

La llamada a la función header produce la carga de la página pasada como


parámetro a la función, y que será la que muestra el paso siguiente del
formulario. En el caso del formulario 4, la parte (b) consiste en construir la
consulta, enviarla a la base de datos y mostrar los resultados.

Por otra parte, los formularios 2, 3 y 4 tendrán un botón que permitirá


retroceder al paso anterior del asistente. Para ello se utilizará el código
siguiente (se muestra el que corresponde al formulario 2):
<INPUT TYPE="BUTTON" VALUE="< Anterior"
ONCLICK="cargaPagina('busca_vivienda_1.php')">

Siendo cargaPagina la siguiente función JavaScript:

function cargaPagina (pagina) {


window.location=pagina;
}

La figura 7 muestra el esquema navegacional del asistente con todos los


enlaces entre los diferentes pasos del mismo.

Paso 1 Paso 2 Paso 3 Paso 4 Resultado

Figura 7: Estructura navegacional del asistente


El usuario puede saber en cada momento el paso en el que se encuentra
gracias a las indicaciones que se le muestran encima del formulario, donde
aparecen los cuatro pasos del asistente, estando el paso actual destacado
respecto a los demás (a través de los estilos paso y pasoactual definidos en la
hoja de estilo).

Para completar el asistente, es preciso disponer en cada paso de la


información introducida en el paso anterior. Esta información se almacenará en
variables de sesión. El procedimiento para hacer esto es el siguiente:
a) En cada formulario debe iniciarse la sesión. Para ello se colocará al
comienzo del mismo, antes que nada, una llamada a la función de PHP
session_start.
b) En los pasos 1, 2 y 3, antes de cargar el siguiente paso, se almacenarán
en la sesión los datos recibidos del formulario. Por ejemplo, en el paso 1
se hará:
$_SESSION['tipo'] = $tipo;
c) En los pasos 2, 3 y 4 se recuperarán los datos almacenados en la sesión
a la vez que se obtienen los datos del formulario. Por ejemplo, en el
paso 2 se hará:
$tipo = $_SESSION['tipo'];

En realidad la recuperación de los datos de la sesión sólo es necesaria en el


paso 4 para realizar la consulta, pero se hace en cada paso para mostrar al
usuario la evolución de su consulta (véase la parte inferior de las figuras 3, 4 y
5).

You might also like