Mini Proyecto: Reporte de Errores Vol. II

Bienvenidos amigos una semana más a nuestro querido blog. Hoy continuaremos la saga del mini proyecto que empecé el otro día. Para los despistados, os dejo enlace al rootie anterior: Mini Proyecto: Reporte de Errores Vol. I

Resumen del rootie anterior

La semana pasada indicamos lo necesario para realizar este proyecto:

  • Instalación de un servidor local ✓
  • Análisis del proyecto ✓
  • Creación de la base de datos ✓
  • Conexión del framework PHP a la base de datos ✓

Creación de tablas en la base de datos

Tras un análisis rápido nos damos cuenta de que podemos tener almacenamos N bugs y N usuarios. Cada usuario puede reportar N número de bugs y 1 bug sólo puede ser reportado por un usuario. Por lo tanto las tablas normalizadas en 3FN quedarían así:

USUARIOS: id de usuario, alias, contraseña y nivel de permisos.

BUGS: id de bug, id del usuario que lo crea, título, descripción, fecha de creación, prioridad y estado.

Para mantener la integridad en la tabla bugs es necesario crear una clave foránea en el campo userId con las siguientes restricciones:

  • ON DELETE CASCADE: cuando se borre (el usuario, de la tabla users), las tuplas de la tabla bugs cuyo id de usuario sea el eliminado, también se borrarán.
  • ON UPDATE CASCADE: cuando se actualice (el id de usuario en la tabla users), las tuplas de la tabla bugs cuyo id de usuario sea el actualizado, también se actualizarán.

Variante: el campo userId de la tabla bugs podría admitir valores nulos. Esto nos permitiría que la clave foránea fuese ON DELETE SET NULL (en lugar de CASCADE), de esta forma si eliminamos un usuario de la tabla users, no se eliminarán todos los bugs reportados por él, sino que el campo userId de la tabla bugs se pondría a NULL.

Ahora podemos importar las tablas a nuestra base de datos ohmybug. Para ello, una posibilidad es entrar en nuestro phpmyadmin (con el WAMP funcionando), seleccionar la base de datos y a continuación hacer clic en la pestaña SQL. Ahí podemos ejecutar las sentencias para crear nuestras tablas:

reporte de errores

Pulsamos el botón CONTINUAR y las tablas se crearán. Para comprobar que la integridad de la clave foránea es correcta podemos hacer la prueba de intentar eliminar la tabla usuarios:

No nos dejará puesto que la tabla bugs depende de ella y saltará este error:

warning Cannot delete or update a parent row: a foreign key constraint fails

Maquetación del Front-End

Ya tenemos la parte básica de la base de datos preparada. Podemos continuar con la maquetación de la vista de nuestra aplicación. Será algo básico donde nuestro formulario se comunicará vía AJAX con nuestro Back-End.

Para el CSS utilizaremos el framework Bootstrap, y para ello voy a utilizar el ejemplo de mi propio tutorial.

Antes de comenzar voy a explicar brevemente la estructura de los directorios más importantes de CodeIgniter:

  • application
    • controllers: aquí crearemos los controladores.
    • models: aquí el modelo de nuestra aplicación.
    • views: aquí irán las vistas

En la carpeta views encontramos por defecto la vista welcome_message.php, el cual procedo a renombrar a bugs.php y lo abrimos con nuestro editor favorito. (¡NO OLVIDEMOS CAMBIAR EL NOMBRE DE LA VISTA TAMBIÉN EN EL CONTROLADOR!)

Bien, así quedaría nuestra vista del formulario para reportar los bugs:

bugs home

¡No ha quedado mal! A continuación el código de bugs.php

Os dejo el directorio completo del desarrollo hasta ahora del proyecto. >> DESCARGAR <<

En el siguiente rootie continuaremos el proyecto, ¡que paséis buena semana!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *