Ejercicios de Introducción al acceso a bases de datos con MySQL

Estos ejercicios están muy relacionados con el backend y el frontend del proyecto por lo que para facilitar su corrección vamos a utilizar la solución final de la base de datos del proyecto de integración. Descarga de moodle la solución de la base de datos y la importas tanto en local como de forma remota.

Crea un nuevo proyecto en NetBeans llamado proyecto y dentro crea también una carpeta llamada cms. En dicha carpeta colocaremos los ejercicios relacionados con la parte privada (backend) y en la carpeta raiz (fuera de cms) colocaremos los ejercicios relacionados con la parte pública (frontend, que será construida poco a poco con CodeIgniter).

FRONTEND::Formulario de búsqueda de libros

Según la especificación del cliente se requiere implementar un buscador de libros. En un principio vamos a crear un buscador que permita buscar por titulo, autor e isbn. Más adelante se añadirán más funcionalidades a dicho buscador según la especificación del proyecto (apartado 2.1 - Parte Pública - Buscador)

Usa el siguiente formulario HTML para buscar libros dados de alta en la base de datos del proyecto uazon. Crea un fichero **form_busqueda.html** y pega en dicho fichero el siguiente código HTML:

<html>
   <head>
      <title>Formulario de b&uacute;squeda - Librer&iacute;a UAZON </title>
   </head>
   <body>
      <h1>Formulario de b&uacute;squeda - Libreria UAZON</h1>
      <form action="buscar_libros.php" method="post">
         Buscar por:<br />
         <select name="por_tipo">
            <option value="titulo">Titulo</option>
            <option value="isbn">ISBN</option>
            <option value="autor">Autor</option>
         </select>
         <br />
         Introduzca el nombre del libro:<br />
         <input name="descripcion" type="text">
         <br />
         <input type="submit" name="submit" value="Buscar libro">
      </form>
   </body>
</html>

A continuación crea un script PHP llamado **buscar_libros.php** que procese la información enviada por el usuario a través del formulario y realice la búsqueda en la base de datos. Puedes usar el código siguiente e incluir el código PHP justo donde está el comentario HTML (<\!\-\- codigo="" php="" \-\-="">):

<html>
   <head>
      <title>Resultados de b&uacute;squeda :: UAzon </title>
   </head>
   <body>
      <h1>Librer&iacute;a UAZON - Resultados de b&uacute;squeda</h1>
      <!—- C&oacute;digo PHP -->
   </body>
</html>

Para resolver este ejercicio tienes que usar **MySQLi estilo orientado a objetos** y un bloque try-catch que envuelva toda la conexión, tratamiento de datos y consulta en la base de datos.

Además debes de:

  • Comprobar que el usuario ha pulsado el botón de submit.
  • Recoger las variables por_tipo y descripción del formulario
  • Eliminar los espacios en blanco del principio y del final del campo descripción (antes de pasarlo al método query)
  • Añadir la función que comprueba si están activas las comillas mágicas (get_magic_quotes()). Si no lo están filtrar los datos para detectar cualquier carácter de control de SQL en los campos "por_tipo" y "descripcion"
  • Eliminar antes de mostrar los valores de la tabla, las posibles barras invertidas que tengan los campos de la tabla libros.
  • Convertir el valor precio a doble antes de mostrarlo.
  • Mostrar los datos de la búsqueda recogiendo los valores de la fila con (ojo, para volver a mostrar los resultados estos otros métodos tienes que volver a ejecutar la query ya que la tupla de resultados se ha vaciado después de recorrerla)
    • fetch_row()
    • fetch_object()
    • Dentro del while que recorre todos los resultados "fetch_assoc()" usa un foreach con $campo y $valor para imprimir el libro en vez de todos los echo. Ojo, tendrás que comprobar si la variable $campo corresponde con la columna "precio" para aplicarle el formato correspondiente al número.

Guarda los dos ficheros, tanto buscar_libros.php como form_busqueda.html dentro del proyecto uazon, es decir, fuera de cms.

(OPTATIVO) Mostrar todos los libros

Para facilitar la corrección de estos ejercicios copia los dos ficheros anteriores buscar_libros.php y form_busqueda.html y les cambias los nombres por buscar_libros_todos.php y form_busqueda_todos.html respectivamente.

Introducir una opción más en el select "por_tipo" del formulario de búsqueda con el texto "TODOS" en el fichero "form_busqueda.html" para que muestre todos los libros de la base de datos.

CMS::Inserción de un libro

Basándonos en el mockup de la especificación del CMS del proyecto uazon, se pide desarrollar la parte de insertar un nuevo libro desde la ficha del libro (ver punto 2.3.4.2 de la especificación del cms). En sesiones posteriores completaremos la acción de modificar un libro ya existente.

Descarga de moodle el fichero **plantillas_insertar_libro.zip** que contiene los ficheros **libros_ficha.php** y la acción para insertar el libro en la tabla **libros** llamado **libros_guardar.php**. El formulario "libros_ficha.php" contiene los siguientes campos que corresponden con el modelo de libros:

  • isbn
  • titulo
  • descripcion
  • editorial
  • n_pags
  • precio

El action del formulario debe llamar al fichero "actions/libros_guardar.php" mediante POST.Dentro del fichero "libros_guardar.php" recoger toda la información, procesarla y una vez que todo es correcto, insertar dicho libro en la tabla "libros". Por defecto, los campos voto y num_voto tendrán valor 0.

No hace falta especificar el campo id en el SQL de inserción, ya que, al ser un campo autonumérico se irá incrementando su valor conforme se vayan insertando libros.

FRONTEND::Comentar un libro

Según la especificación del proyecto, al cliente le gustaría que los usuarios valoren y opinen sobre los libros que se venden en la web. Pero las valoraciones deben realizarse por usuarios registrados y además tendrán que ser validados por un administrador (la comprobación de usuario registrado se realizará en sesiones posteriores)

Se pide crear un formulario llamado **comentarLibroForm.php** donde un usuario pueda escribir un comentario sobre un libro. El identificador del libro se pasará por la url (comentarLibroForm.php?id=id_libro). El valor de id_libro será el identificador de ese libro en la tabla libros de la base de datos.Habrá que:

  1. Recoger el "id" (identificador del libro) por GET y cargar los datos del libro.
  2. Añadir un campo de texto para incluir el nombre del autor del comentario.
  3. Crear el fichero comentarLibroBD.php que recoja los datos del formulario y realice la inserción en la BD.
  4. Para poder insertar el comentario necesitamos el identificador de dicho libro por lo que habrá que añadir un campo oculto llamado "fk_libros" dentro del formulario con el valor del identificador del libro.

Cuando se muestren los datos de un libro a través del formulario de búsqueda, que aparezca también un enlace llamado "Comentar libro" y que nos lleve directamente al formulario de comentario de dicho libro. Dicho enlace llamará al script PHP anteriormente mencionado **comentarLibroForm.php**que cargará el comentario pasando el identificador del libro por la URL (GET)

(OPTATIVO) Mostrar todos los comentarios validados de un libro

Mostrar los 10 últimos comentarios validados (**campo validado** a 1) que han hecho los usuarios sobre ese libro. El listado se mostrará justo debajo del formulario para comentar el libro.

results matching ""

    No results matching ""