Parcial 2 Desarrollo de Aplicaciones Web

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 8

DESARROLLO DE APLICACIONES WEB

PARCIAL CORTE 2
Código Asignatura: 03A22-4B
Grupo: DAW 4B Fecha: 18/05/2023
Docente: MgIs Roberto Isaac Porto Barceló
Modalidad: Parejas
Tiempo: 6:00 – 10pm
Cédula: __________________________________________________________
Nombre: _________________________________________________________

Punto 1: Inmobiliaria: Desarrollando una aplicación web en PHP con acceso


a datos

1.1. Diseñe el siguiente formulario de viviendas Figura 1.

Uso de elementos INPUT

Figura 1: formulario de inserción de vivienda

1.2. Validación de formularios

Modifique el formulario para que los mensajes de error aparezcan en el propio


formulario. La figura 1 muestra el formulario con algunos datos incorrectos y la
figura 2 muestra el resultado de pulsar el botón ‘Insertar vivienda’ con los datos
anteriores.

Figura 2: formulario de inserción de vivienda validado

Utilice el siguiente esquema para realizar la validación de los datos introducidos y


mostrar los errores sobre el propio formulario. Se supone que el botón de envío del
formulario tiene el nombre ‘insertar’.

<?PHP

// Obtener los valores introducidos en el formulario

// Validar datos

$error = false;

if (isset($insertar))

// Comprobar errores
}

// Si los datos son correctos, procesar formulario

if (isset($insertar) && $error==false)

// Mover foto a su ubicación definitiva

// Mostrar los datos introducidos

else

// Mostrar el formulario con los mensajes de error que


procedan

?>

1.3. Inserción y consulta de datos

Desarrolle una página que produzca un listado con todas las viviendas disponibles
en la inmobiliaria en orden creciente de precio, tal como se muestra en la figura 3.
Si la vivienda dispone de una foto se mostrará un enlace con la misma que al
activarse la cargará en una página independiente (figura 4).

Figura 3: listado de viviendas de la inmobiliaria Figura 4: imagen de una vivienda


1. Crear la tabla ‘viviendas’ en la base de datos ‘lindavista’. La tabla estará
formada por los 10 campos que se muestran en la tabla 1.
2. Insertar algunos datos en la tabla ‘viviendas’. Puede utilizar la sql
suministrada o utilizar el formulario diseñado en el punto 1. En tal caso se
colocará el nombre de la foto en el campo ‘foto’ de la tabla y se copiará el
fichero a una carpeta de nombre ‘fotos’ situada bajo la carpeta principal.
También deberá copiarse en esta carpeta la imagen ‘ico-fichero.gif’
suministrada.

Figura 5: formulario de inserción de vivienda


Figura 6: resultados de la inserción de vivienda

Nombre Tipo Observaciones

id smallint Not-null, unsigned, auto-increment, primary key

tipo enum ('Piso','Adosado','Chalet','Casa') Not-null

zona enum ('Centro','Nervión','Triana', 'Aljarafe','Macarena') Not-null

direccion varchar (100) Not-null

ndormitorios enum ('1','2','3','4','5') Not-null, default 3

precio decimal Not-null

tamano decimal Not-null

extras set ('Piscina','Jardín','Garage') Not-null

foto varchar (50) Null

observaciones text Null

3. Asignar al usuario ‘cursophp’ el permiso


4. Asignar al usuario ‘cursophp’ los permisos ‘SELECT’, ‘INSERT’, ‘UPDATE’ y
‘DELETE’. No olvidar reiniciar el servidor
5. Crear la página siguiendo el esquema explicado en clase para la conexión a
la base de datos y la consulta a la tabla:

Tabla 1: estructura de la tabla de viviendas

<?PHP
// Conectar con el servidor de base de datos

// Seleccionar base de datos

// Enviar consulta

// Mostrar resultados de la consulta

// Cerrar conexión

?>

El campo ‘extras’ merece un tratamiento especial al tratarse de una tabla.


Veámoslo con un ejemplo. Supongamos que se han marcado las casillas
‘Piscina’ y ‘Garage’. En tal caso se recibirá una tablas extras con dos elementos:

extras[0]=”Piscina”

extras[1]=”Garage”

Como el campo ‘extras’ de la tabla ‘viviendas’ es de tipo SET (conjunto), hay


que crear a partir de la tabla extras la cadena

“Piscina”, “Garage”

que será el valor a insertar en el campo. El siguiente código se encarga de


realizar esta tarea:

$n = count ($extras);
if ($n > 0)
{
$ex = $extras[0];
for ($i=1; $i<$n; $i++)
$ex = $ex . "," . $extras[$i];
}
else
$ex = "";
Por otra parte, cuando se muestren los valores insertados también habrá que
tener en cuenta que extras es una tabla, por lo que habrá que utilizar un bucle
para mostrar sus elementos.

Apartado 2

En el formulario anterior los valores de los campos de tipo enumerado (ENUM)


y conjunto (SET) están escritos directamente en el propio código. Por ejemplo,
para el tipo de vivienda se tiene:

<SELECT NAME="tipo">
<OPTION VALUE="Piso" SELECTED>Piso
<OPTION VALUE="Adosado">Adosado
<OPTION VALUE="Chalet">Chalet
<OPTION VALUE="Casa">Casa
</SELECT>

Este hecho no es muy deseable ya que si se modifican los valores del tipo en la
tabla hay que modificar también el código del formulario. Por lo que se sugiere
tomar los valores automáticamente de la tabla en lugar de escribirlos ‘a mano’
en el código. Para ello se utiliza la siguiente instrucción SQL:

SHOW columns FROM viviendas LIKE 'tipo'

que devuelve una tabla con las propiedades del campo ‘tipo’. El elemento [1]
de esta tabla contiene lo siguiente:

enum("Piso","Adosado","Chalet","Casa")

A partir de esta información podemos obtener los valores del tipo enumerado y
generar las opciones del elemento SELECT. Sólo queda marcar con
SELECTED la opción que estaba seleccionada en caso de haberse enviado el
formulario, para lo cual se usa el valor almacenado en la variable $tipo.

El código completo que realiza toda esta operación es el siguiente:

// Obtener los valores del tipo enumerado


$instruccion = "SHOW columns FROM viviendas LIKE 'tipo'";
$consulta = mysql_query ($instruccion, $conexion);
$row = mysql_fetch_array ($consulta);

// Pasar los valores a una tabla


$lis = strstr ($row[1], "(");
$lis = ltrim ($lis, "(");
$lis = rtrim ($lis, ")");
$lista = explode (",", $lis);
// Mostrar cada valor en un elemento OPTION
if (isset($insertar))
$selected = $tipo;
else
$selected = "";
for ($i=0; $i<count($lista); $i++)
{
$cad = trim ($lista[$i], "'");
if ($cad == $selected)
print ("<OPTION SELECTED>" . $cad . "\n");
else
print ("<OPTION>" . $cad . "\n");
}

Modifique el formulario del apartado anterior utilizando este procedimiento para


generar automáticamente los valores de los elementos de tipo enumerado (tipo
de vivienda, zona y número de dormitorios) y conjunto (extras).

¡Éxitos!

También podría gustarte