programaci n por capas parte ii n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Programación por Capas Parte II PowerPoint Presentation
Download Presentation
Programación por Capas Parte II

Loading in 2 Seconds...

play fullscreen
1 / 25

Programación por Capas Parte II - PowerPoint PPT Presentation


  • 97 Views
  • Uploaded on

Programación por Capas Parte II. Daniel Correa Botero. Capa Gestor de Base de Datos. Esta capa contiene todo el código sql de la base de datos, contiene la contraseña y datos de conexión a la base de datos, la función para cerrar conexión, entre otras.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Programación por Capas Parte II' - thu


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
capa gestor de base de datos
Capa Gestor de Base de Datos
  • Esta capa contiene todo el código sql de la base de datos, contiene la contraseña y datos de conexión a la base de datos, la función para cerrar conexión, entre otras.
  • Esta capa se encuentra representada por el archivo glight/modules/db.php
  • Nota: La única forma en que se debe acceder a esta capa y utilizar las funciones de esta capa es mediante la capa ORM (mediante la variable $this->orm que contienen todos los controladores).
variables de conexi n
Variables de conexión
  • Dentro del archivo glight/modules/db.php encontraremos las siguientes variables que deberá modificar cada programador de acuerdo con los datos de su base de datos.var $server = "localhost"; Indica que en servidor se encuentra la base de datos, por defecto es localhostvar $user = "root"; Indica el nombre de usuario de la base de datosvar $pass = ""; Indica el password de la base de datosvar $db = “work"; Indica el nombre de la base de datos
creaci n de base de datos
Creación de base de datos
  • Ingresamos a http://localhost/phpmyadmin/
  • Luego a Bases de datos.
  • Luego a crear base de datos y le ponemos el nombre de work
creaci n tabla boss
Creación tabla boss
  • CREATE TABLE boss

(document bigint(20) not null, name VARCHAR(30) not null, charge VARCHAR(30) not null, PRIMARY KEY(document)) ENGINE=InnoDB;

Nota: Ingresamos a phpmyadmin – luego seleccionamos la tabla creada anteriormente – después seleccionamos la opción sql y copiamos y pegamos el código anterior y lo ejecutamos

creaci n tabla person
Creación tabla person
  • CREATE TABLE person(documentbigint(20) notnull,name VARCHAR(30) notnull,lastname VARCHAR(30) notnull,ageint(5) notnull,bossbigint(20) null, PRIMARY KEY(document),CONSTRAINT b_p FOREIGN KEY (boss) REFERENCES boss (document)) ENGINE=InnoDB;
creaci n tabla user
Creación tabla user
  • CREATE TABLE user(id bigint(20) NOT NULL AUTO_INCREMENT,namevarchar(30) NOT NULL,uservarchar(10) NOT NULL,passwordvarchar(72) NOT NULL,typevarchar(20) NOT NULL, email varchar(50) NOT NULL, PRIMARY KEY (id), UNIQUE KEY user (user), UNIQUE KEY email (email)) ENGINE=InnoDB;
insertar datos en user
Insertar Datos en user
  • INSERT INTO `user` (`id`, `name`, `user`, `password`, `type`, `email`) VALUES (1, 'Admin', 'admin', '$2a$08$JyL3VzFSY76kMir2oA0mt.0XrccedWcvt1F/wu6gFjbZgQmCsjJ4W', 'admin', 'zzzexample@example.com'),(2, 'Jorge', 'jorge', '$2a$08$tndTZZ2T.oGuH.GsRTYpeuvLHJgnXQ2vCYHE843iaugAIQ6UN3YTe', 'user', 'zzzexample2@example.com');
modificaci n al bd php
Modificación al bd.php
  • Buscar la función SELECT (cerca a la linea 120).
  • Copiartodo el case user y triplicarlo.
  • Modificarlopara los casos boss y person.

case "person":

switch($option['option'])

{

case "all" : $info=$this->get_data("SELECT * FROM person;"); break;

}

break;

funciones principales
Funciones principales
  • Son 4 las funciones principales del gestor de base de datos:

- insert: aquí deben ir todos los casos de inserción de todas las tablas de la base de datos.- delete: aquí deben ir todos los casos de borrado de todas las tablas de la base de datos.- update: aquí deben ir todos los casos de editado de todas las tablas de la base de datos.- select: aquí deben ir todos los casos de selección de datos de todas las tablas de la base de datos.

rbol de switches
Árbol de switches

Cada una de estas 4 funciones cuenta con 2 niveles de switches

- El primer nivel de switch debe tener como cases todas las tablas, esto quiere decir que si por ejemplo tengo 2 tablas: person y boss entonces dentro del contenido del primer switch de la función select deben estar 2 cases, el case "person" y el case "boss“

- El segundo nivel de switch es un switch interno de cada case del switch anterior, esto quiere decir que por ejemplo dentro del contenido dentro del case "person" (del ejemplo anterior), existirá otro switch que a su vez tendrá unos cases (propios de cada aplicación) que permitirán extraer diferentes datos de la tabla person.

ejemplo de rbol de switches1
Ejemplo de árbol de switches

Este ejemplo nos muestra que la función select del db.php cuenta con un solo case del switch de nivel 1 (case "person") que corresponde a la tabla person, y a su vez nos muestra que para esta tabla el programador puede necesitar extraer la información de todas las person (case "all") o de una sola person de acuerdo a su document (case "one").De este modo es muy fácil que cualquier programador pueda navegar a través de estas funciones y encontrar fácilmente la parte donde debe agregar cases para extraer o editar o agregar datos de cualquier tabla.Nota: por lo general son estas funciones las que deberá modificar el programador y agregar a cada una los cases que se considere necesarios.

capa orm object to relational mapping
Capa ORM (ObjecttoRelationalMapping)
  • Esta capa es la que nos permite mapear u organizar los datos que vienen de la base de datos en forma relacional a forma objetual, por esta razón se encuentra ubicada en la mitad de la capa de clases y del gestor de base de datos.
  • Esta capa esta representada por el archivo orm.php ubicado en la ruta glight/modules/orm.php y es la única que puede acceder a las funciones de la base de datos.Nota: todo controlador tiene una variable llamada ($this->orm) que representa esta capa.
variables del archivo orm php
Variables del archivo orm.php

- var $db: es una variable que representa una instancia de la capa gestor de base de datos y mediante esta variable se invocan las funciones de dicha capa.- var $data: es una variable que se usa cuando se recoge información del gestor (se usan los selects), esta variable contiene toda esa información en forma relacional- var $objects_to_return: es una variable que contiene la información del gestor pero en forma objetual, para este proceso de transformación se usa la función get_objetcs()- var $numpages: es una variable que se usa para guardar la cantidad de páginas de una consulta por páginas de una tabla.- var $last_id: es una variable que se usa para guardar el último id que se registro en la base de datos de una tabla.

agregar datos en phpmyadmin
Agregar datos en Phpmyadmin

Documento: 1

Nombre: Juan

Cargo: Asistente

Documento: 2

Nombre: Daniel

Cargo: Administrador

Documento: 3

Nombre: Sebastián

Cargo: Jefe de desarrollo

Agregamos 3 jefes desde phpmyadmin

extraer datos de una tabla example9 tpl
Extraer datos de una tabla (example9.tpl)

<divclass="square">

<tableborder="0" width="100%" cellpadding="0" cellspacing="10">

<tr><td><b>JEFES DE LA EMPRESA</b></td></tr>

{sectionloop=$bossname=i}

<tr><td><b>Documento:</b> {$boss[i]->get('document')}<br />

<b>Nombre:</b> {$boss[i]->get('name')}<br />

<b>Cargo:</b> {$boss[i]->get('charge')}

</td></tr>

{/section}

</table>

</div>

funci n connect y close
Función Connect y Close

$this->orm->connect(): esta función realiza una conexión a la base de datos.

$this->orm->close(): esta función finaliza la conexión a la base de datos

funci n read data
Función read_data

$this->orm->read_data(par1, par2, par3): esta función realiza todas las consultas de SELECT de la base de datos y almacena toda la información recogida en forma relacional por dentro del orm, recibe 3 parámetros:- par1: este parámetro es un array con los nombres de las clases que deseamos leer de la base de datos (en el caso del ejemplo solo deseamos hacer una lectura de la clase 'boss', pero pueden darse múltiples lecturas - ver tutorial siguiente).

funci n read data1
Función read_data
  • par2: llamado $options, es una matriz o array de 2 dimensiones, por cada clase enviada en el par1, debe existir un $options['nombre_de_la_clase']['option'] = 'valor'; donde valor corresponde al nombre de la opción de lectura del select del switche de nivel 2 del gestor de base de datos (en el caso de ejemplo como solo hay una lectura de una clase entonces optionssera igual a  $options['boss']['option']="all"; lo que indica que se desea hacer una lectura de la clase boss del caso 'all' donde 'all' representa extraer todos los datos de la tabla 'boss‘
  • - par3 (opcional): llamado $cod, también es un array de 2 dimensiones, este parámetro recoge códigos o información adicional que ayuda con SELECTs que dependen de códigos adicionales, por ejemplo: cuando se desea hacer un SELECT de una persona por su documento, aquí se enviaría un parámetro cod con el dato de ese documento (en este ejemplo no se envía este parámetro debido a que no necesitamos seleccionar jefes específicos por códigos si no que los seleccionamos todos).
funci n get objects
Función get_objects
  • $this->orm->get_objetcs(par1, par2, par3): esta función se encarga de transformar los datos relacionales recogidos por 'read_data' y convertirlos en objetos, al final retorna un objeto con toda la información recogida.
  • - par1: recibe el nombre de la clase (una sola) que se quiere transformar a forma objetual (en el caso del ejemplo solo trabajamos con la clase 'boss' y esa es la que deseamos transformar).
funci n get objects1
Función get_objects

- par2 (opcional): llamado $components, es un array de 2 dimensiones que contiene información para "armar" objetos mas complejos, por ejemplo objetos donde existan relaciones o pegar objetos de un tipo a objetos de otro tipo (mas adelante encontraremos un ejemplo donde armaremos jefes y a estos jefes les pegaremos las personas que tienen asignadas).- par3 (opcional): llamado $auxiliars, es un array, que contiene el nombre de variables auxiliares adicionales que se desean extraer de la base de datos, por ejemplo: algunas veces deseamos extraer todos los datos de una persona, pero adicionalmente deseamos extraer solo el nombre del jefe y debido a que el nombre del jefe no es un atributo propio de la clase person, entonces se debe usar esta variable auxiliars (mas adelante mostraremos su funcionamiento y un ejemplo).

agregar datos desde phpmyadmin
Agregar datos desde phpmyadmin

Documento: 101Nombre: RogerApellido: AlvarezEdad: 20Jefe: 1Documento: 102Nombre:AndresApellido: SossaEdad: 17Jefe: 1Documento: 103Nombre: CristhianApellido:GarzonEdad: 22Jefe: 1

Agregamos 4 personas desde phpmyadmin

Documento: 104Nombre: CarlosApellido:VivaresEdad: 37Jefe: 2

modificamos db php
Modificamos db.php
  • Agregamos un case al switche de nivel 2 de boss
  • Agregamos un case al switche de nivel 2 de person

case "one": $document=mysql_real_escape_string($data['document']); $info=$this->get_data("SELECT * FROM boss WHERE document=‘$document';"); break;

case "by_boss": $boss=mysql_real_escape_string($data['boss']);

$info=$this->get_data("SELECT * FROM person WHERE boss=‘$boss';"); break;