Diferencia entre revisiones de «Usuario:ManuelRomero/NewPHP/B2T8/BasesDatos/ejercicios»

De WikiEducator
Saltar a: navegación, buscar
(Ejercicio 4: Mostrar en contenido de una tabla)
(24 revisiones intermedias por el mismo usuario no mostrado)
Línea 1: Línea 1:
 
{{:Usuario:ManuelRomero/dwes/B2T8/BasesDatos/nav}}
 
{{:Usuario:ManuelRomero/dwes/B2T8/BasesDatos/nav}}
 
<br />
 
<br />
 +
==Ejercicios básicos==
 +
;Realiza los siguientes ejercicios
  
{{Nota|
+
===Ejercicio 1: Conexión con mysql===
'''''Para todos los ejercicios'''''
+
<br />
*Al menos debe de haber 3 atributos por cada entidad
+
{{MRM_Actividad|Title=Conexión con mysql|
*Se debe de especificar un atributo (o conjunto de atributos) que constituyan la clave para cada entidad
+
*Realiza una conexión a una base de datos utilizando el conectori '''''mysqli'''''
 +
*Previamente has de crear la base de datos con una tabla
 +
<source lang=sql>
 +
create database usuarios;
 +
use  usuarios;
 +
        create table usuario(
 +
              id int not null unique auto_inccremet,
 +
              nombre varchar(40) unique,
 +
              password varchar(200),
 +
        )
 +
</source>
 +
*Los parámetros de conexión se establecerán en un formulario
 +
*Una vez conectado nos mostrará la siguiente información:
 +
(https://www.php.net/manual/es/class.mysqli.php)
 +
#Versión usada en el cliente (int $client_version;)
 +
#Información del host (''string $host_info'')
 +
#versión del protocolo utilizado string $protocol_version;
 +
#información del servidor (string $server_info)
 +
#Versión utilizada en el servidor de bases de datos (int $server_version);
 +
*En el caso de que no hayamos conectado nos mostrará el código de error y una descripción del mismo
 +
*La aplicación deberá cerrar la conexión
 
}}
 
}}
  
 +
===Ejercicio 2: Conexión con mysql con fichero ini para leer parámetros===
 +
<br/>
 +
{{MRM_Actividad|Title=Conexión con mysql desde un fichero ini|
 +
*Modifica el ejercicio anterior permitiendo que los datos de conexión se aporten en un fichero ini (parse_ini_file)
 +
https://www.php.net/manual/es/function.parse-ini-file.php
 +
}}
  
===Base de datos de Empleados===
+
===Ejercicio 3: Mostrar bases de datos y tablas===
 +
{{MRM_Actividad|Title=Mostrar bases de datos|
 +
*Modifica la aplicación anterior con los siguientes requisitos
 +
*Nos conectamos al gestor de base de datos (no a una  base de datos concreta.
 +
*Tenemos un submit que nos permitirá ver las bases de datos
 +
*Al presionar nos aparecerán tantos submit como bases de datos tenemos
 +
*Seleccionando una base de datos concreta (haciendo submit) mostraremos loas tablas que  hay en esa base de datos
 +
}}
 +
 
 +
===Ejercicio 4: Mostrar en contenido de una tabla===
 
<br />
 
<br />
{{MRM_Actividad|Title=Especificación|
+
{{MRM_Actividad|Title=Mostrar contenido de una tabla|
*Se quiere guardar datos de empleados.
+
*Modifica la aplicación anterior con los siguientes requisitos
*Hay equipos de empleados con determinadas funciones.
+
*Al seleccionar una tabla, veremos el contenido de la misma
*Cada empleado tiene un supervisor que es otro empleado más.
+
*Para ello se recomienda generar una clase que permita gestionar una tabla html para ver el contendio de una consulta
*Un supervisor puede tener varios supervisores.
+
*La clase podría tener la estructura
*Cada equipo tiene un jefe
+
<source lang=php>
*Un jefe lo es solo de un equipo.
+
Class Tabla{
*A parte de ello cada equipo tiene un jefe que es un empleado que pertenece al equipo
+
<?php
 +
 
 +
$titulos;
 +
$contenido;
 +
$html;
 +
 
 +
class Tabla
 +
{
 +
    /**
 +
    *
 +
    * @param array $titulos un array con los t�tulos de cada columna
 +
    * @param array $contenido un array donde cada elemento es una fila.
 +
    */
 +
    public function __construct(array $titulos, array $contenido) {
 +
 
 +
        $this->contenido = $contenido;
 +
        $this->titulos = $titulos;
 +
        $this->html=$this->crea_tabla ();
 +
 
 +
    }
 +
//Implmentar el resto de métodos
 +
 
 +
}
 +
</source>
 +
Los requisitos los podríamos enumerar
 +
;Requisitos anteriores
 +
#Obtener los datos de conexión
 +
#Obtener la base de datos
 +
#Realizar la conexión
 +
;Requisitos añadidos
 +
#Obtener la tabla
 +
#Obtener los nombres de los campos
 +
#OBtener el contenido de la tabla
 +
#Mostrar el contenido con un formato de tabla html
 +
 
 
}}
 
}}
{{MRM_Actividad|Title=Biblioteca|
 
  
*Hay alumnos (datos personales, dni, edad y dirección e idiomas que habla).
+
{{MRM_Actividad|Tilte=Insertar registros|
*Tenemos libros (autores, editorial, isbn, título, tema)
+
*Añade la opción de insertar nuevos usuarios a la tabla
*Ûn alumno puede tomar prestados varios libros
+
*Cada libro en un momento dado, solo lo puede tener físicamente una alumna.
+
*Queremos mantener información de todos los libros que haya podido tener un determinado alumno
+
*Cuando un alumno toma prestado un libro anotaremos la fecha del préstamo. La fecha prevista de devolución será 15 días naturales la fecha del préstamo.
+
*Anotaremos la fecha real de devolución.
+
*Las personas pueden tener penalizaciones que será o de un importe o de un tiempo sin poder tomar prestados libros cuando la fecha real de devolución sea posterior a la fecha prevista.
+
 
}}
 
}}
{{MRM_Actividad|Title=Universidad|
+
 
*El departamento de relaciones públicas de la Universidad pretende construir una aplicación informática capaz de proporcionar información acerca de su organización docente, mediante consultas realizadas a una base de datos que contenga toda la información necesaria. Un primer contacto con responsables de la instrucción permite concluir que:
+
 
# La Universidad se encuentra estructurada en Departamentos, cada uno de los cuales integra una o más Áreas de Conocimiento. Evidentemente, no puede haber Áreas de Conocimiento que pertenecen a Departamentos diferentes.
+
 
# Todo profesor está adscrito a una única Área de Conocimiento, pudiendo darse el caso de que, transitoriamente, un Área no tenga profesores.
+
 
# Cada una de las diferentes titulaciones ofertadas por la Universidad consta de una serie de asignaturas, dándose algunos casos de asignaturas comunes a varias titulaciones. La impartición de cada una de ellas es encargada a una de las Áreas de Conocimiento existentes.
+
{{MRM_Actividad|Title=Cargar la base de datos dwes|
# El Departamento establece las asignaturas que debe impartir cada profesor, siendo frecuente que en la impartición de una asignatura participen dos profesores. No obstante, hay algunos casos extraordinarios en los que intervienen 3 o más profesores.
+
*Carga la base de datos que a continuación se aporta
# Tanto los Departamentos como las áreas, titulaciones, asignaturas y profesores tienen asignados códigos identificativos específicos, elaborados por el MEC.: codDpto, codArea, codTitulo, codAsign y codProf. No obstante, para evitar el efecto negativo de los cambios de código por parte del Ministerio y la ausencia de códigos en determinadas asignaturas nuevas, etc., se opta por utilizar un código numérico interno propio.
+
{{Plegable|hide|Base de datos ''''dwes''''|
*De momento, sólo se pretende representar la información esencial. Esto significa que, además de los códigos y los nombres de los elementos representados, sólo es preciso reflejar las horas de teoría y prácticas de cada asignatura y las horas de teoría y prácticas impartidas por cada profesor en cada una de las asignaturas en que participa.
+
<soruce lang=sql>
 +
</source> }}
 +
*Modifica la aplicación anterior para mostrar todas las tablas que hay en la base de datos
 +
*Cada tabla será un submit
 +
*Al hacer click sobre una tabla concreta, se mostrará todo el contenido de la tabla en una tabla concreta
 
}}
 
}}
{{imagen:universidad_er.png}}
 
  
  
<!--
+
{{MRM_Actividad|Title= Crear tiendas|
{{Actividad|Title= Crear tiendas|
+
 
*Realiza una pequeña app web que añada tiendas a nuestra base de datos '''''dwes'''''
 
*Realiza una pequeña app web que añada tiendas a nuestra base de datos '''''dwes'''''
 
*En un formulario daremos los valores de '''tienda''' y '''teléfono'''
 
*En un formulario daremos los valores de '''tienda''' y '''teléfono'''
Línea 57: Línea 123:
  
 
}}
 
}}
{{Actividad|
+
{{MRM_Actividad|
 
*Realiza una aplicación que permita registrar usuarios o bien visualizarlos
 
*Realiza una aplicación que permita registrar usuarios o bien visualizarlos
 
*La password ha de estar cifrada (md5)
 
*La password ha de estar cifrada (md5)
Línea 86: Línea 152:
  
  
{{Actividad|Title=Gestión productos|
+
{{MRM_Actividad|Title=Gestión productos|
 
;PRACTICA DE BASES DE DATOS USANDO PDO
 
;PRACTICA DE BASES DE DATOS USANDO PDO
 
*Partiendo de la base de datos '''''dwes''''' usada en la explicación de este tema ,se pide que realicéis una aplicación que permita gestionar los registros de la tabla '''productos'''.
 
*Partiendo de la base de datos '''''dwes''''' usada en la explicación de este tema ,se pide que realicéis una aplicación que permita gestionar los registros de la tabla '''productos'''.
Línea 447: Línea 513:
  
 
}}
 
}}
-->
 

Revisión de 18:48 23 ene 2020



Ejercicios básicos

Realiza los siguientes ejercicios

Ejercicio 1: Conexión con mysql



Icon activity.jpg
Conexión con mysql
  • Realiza una conexión a una base de datos utilizando el conectori mysqli
  • Previamente has de crear la base de datos con una tabla
CREATE DATABASE usuarios;
USE  usuarios;
        CREATE TABLE usuario(
              id INT NOT NULL UNIQUE auto_inccremet,
              nombre VARCHAR(40) UNIQUE,
              password VARCHAR(200),
        )
  • Los parámetros de conexión se establecerán en un formulario
  • Una vez conectado nos mostrará la siguiente información:

(https://www.php.net/manual/es/class.mysqli.php)

  1. Versión usada en el cliente (int $client_version;)
  2. Información del host (string $host_info)
  3. versión del protocolo utilizado string $protocol_version;
  4. información del servidor (string $server_info)
  5. Versión utilizada en el servidor de bases de datos (int $server_version);
  • En el caso de que no hayamos conectado nos mostrará el código de error y una descripción del mismo
  • La aplicación deberá cerrar la conexión




Ejercicio 2: Conexión con mysql con fichero ini para leer parámetros



Icon activity.jpg
Conexión con mysql desde un fichero ini
  • Modifica el ejercicio anterior permitiendo que los datos de conexión se aporten en un fichero ini (parse_ini_file)
https://www.php.net/manual/es/function.parse-ini-file.php




Ejercicio 3: Mostrar bases de datos y tablas

Icon activity.jpg
Mostrar bases de datos
  • Modifica la aplicación anterior con los siguientes requisitos
  • Nos conectamos al gestor de base de datos (no a una base de datos concreta.
  • Tenemos un submit que nos permitirá ver las bases de datos
  • Al presionar nos aparecerán tantos submit como bases de datos tenemos
  • Seleccionando una base de datos concreta (haciendo submit) mostraremos loas tablas que hay en esa base de datos




Ejercicio 4: Mostrar en contenido de una tabla



Icon activity.jpg
Mostrar contenido de una tabla
  • Modifica la aplicación anterior con los siguientes requisitos
  • Al seleccionar una tabla, veremos el contenido de la misma
  • Para ello se recomienda generar una clase que permita gestionar una tabla html para ver el contendio de una consulta
  • La clase podría tener la estructura
Class Tabla{
<?php
 
$titulos;
$contenido;
$html;
 
class Tabla
{
    /**
     *
     * @param array $titulos un array con los t�tulos de cada columna
     * @param array $contenido un array donde cada elemento es una fila.
     */
    public function __construct(array $titulos, array $contenido) {
 
        $this->contenido = $contenido;
        $this->titulos = $titulos;
        $this->html=$this->crea_tabla ();
 
    }
//Implmentar el resto de métodos
 
}

Los requisitos los podríamos enumerar

Requisitos anteriores
  1. Obtener los datos de conexión
  2. Obtener la base de datos
  3. Realizar la conexión
Requisitos añadidos
  1. Obtener la tabla
  2. Obtener los nombres de los campos
  3. OBtener el contenido de la tabla
  4. Mostrar el contenido con un formato de tabla html





Icon activity.jpg
Actividad
  • Añade la opción de insertar nuevos usuarios a la tabla







Icon activity.jpg
Cargar la base de datos dwes
  • Carga la base de datos que a continuación se aporta
  • Modifica la aplicación anterior para mostrar todas las tablas que hay en la base de datos
  • Cada tabla será un submit
  • Al hacer click sobre una tabla concreta, se mostrará todo el contenido de la tabla en una tabla concreta






Icon activity.jpg
Crear tiendas
  • Realiza una pequeña app web que añada tiendas a nuestra base de datos dwes
  • En un formulario daremos los valores de tienda y teléfono
  • En un botón submit iniciaremos el proceso y si todo es ok se agragará la tienda en la tabla correspondiente
  • Posteriormente se mostrará el mensaje informando
Se ha agregado la tienda con código XXX nombre: YYY teléfono: ZZZ
  • Se quedará el mismo formulario para poder volver a añadir más tiendas
  • Además visualizaremos debajo del formulario todas las tiendas mejor en una tabla je je .. (Gracias Deyvid).





}}


Icon activity.jpg
Actividad
  • Realiza una aplicación que permita registrar usuarios o bien visualizarlos
  • La password ha de estar cifrada (md5)
 $pass = $_POST['....'];
 $pass = md5($pass); //Aquí la pass queda cifrada usando la función md5
  • Crea un formulario con un campo de texto para nombre y password
  • En ella el usuario podrá
  1. Registrarse
  2. Visualizar todos los usuarios registrados
  3. Borrar la tabla

LoginRegistrarVisualizar.png

  • Ten en cuenta que se debe de permitir insertar el nombre por ejemplo Peters' Son
para que el usuario se puede registrar
  • Si no aporto nombre o password me informará de ello

NoDatosRegistrarVisualizar.png

  • Si borramos me informará del número de registros borrados

BorradosRegistrarVisualizar.png

  • Al ver usuarios mostrará todos los usuarios que estén en la base de datos

ListadoRegistrarVisualizar.png

Aqui puedes ver un ejemplo de la aplicación http://manuel.infenlaces.com/dwes/RegistrarUsuarios/

Icon present.gif
Tip: Si pide indentificarse accede con alumno/fuina







Icon activity.jpg
Gestión productos
PRACTICA DE BASES DE DATOS USANDO PDO
  • Partiendo de la base de datos dwes usada en la explicación de este tema ,se pide que realicéis una aplicación que permita gestionar los registros de la tabla productos.
  • La aplicación se dividirá entres páginas web:
1 listado.php.
  • Mostrara un cuadro desplegable que permita seleccionar un registro de la tabla familias, junto a un botón "Mostrar". *Al pulsar el botón, se mostrará un listado de los productos de la familia seleccionada.
  • Para cada producto, se mostrará su nombre corto y su PVP, junto a un botón con el texto Editar (se puede usar como opción crear un formulario distinto por cada producto).
  • Cuando se pulse ese botón, se enviará el formulario a la página editar.php.
2 Editar.php
  • Debe mostrar los datos del producto seleccionado en la página anterior (nombre corto, nombre, descripción y PVP) dentro de un formulario que permita cambiarlos, y dos botones: Actualizar y Cancelar. El formulario se enviará a la página actualizar.php.
3 actulizar.php
  • Esta página simplemente redirige a la página listado.php, pero si en el formulario anterior se ha pulsado Actualizar (y no Cancelar),
  • antes de redirigir debe ejecutar una consulta para cambiar los datos del producto.
  • Para redirigir se puede utilizar un formulario con un botón "Continuar" o bien dentro del encabezado la etiqueta
 <meta http-equiv='refresh' content='1'; url=>

Para acceder a la base de datos se debe usar mysql, realizando todas las consultas parametrizadas.