Programación por Capas: Capas gestor de base de Datos y ORM II Diseño y Construcción de Productos de Software Daniel Correa Botero Jeferson David Ossa.

Slides:



Advertisements
Presentaciones similares
Introducción a la programación (Clase 2)
Advertisements

Support.ebsco.com Como crear una Colección Local Tutorial.
1 Curso Básico de C.I.O. Light Sección 4 Grupos y Subgrupos Sección 4 - Grupos y Subgrupos.
Sección 4 Gastos Generales
Curso de java básico (scjp)
integridad referencial
Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
AB TUTOR Manual básico.
COLEGIO DE BACHILLERES PLANTEL 13 XOCHIMILCO-TEPEPAN MATERIA:TIC EQUIPO:23 PRESENTACION: BASE DE DATOS ALUMNAS: Velazquez Corona Elsa Ponciano Antonio.
A continuación explicamos los pasos a seguir para cargar un pedido en nuestra página web. 1.Ingresar a 2. Loguearse.
Daniel Correa Botero. Las capas en azul representan módulos prediseñados que no se deben programar.
SQL Server Integration Services SSIS
SISTEMA DE NACIMIENTOS MANUAL DEL USUARIO. El objetivo del presente manual es servir de guía al usuario final para interactuar con el Sistema, permitiéndole.
Capitulo 4 Excepciones.
MANEJO DE ARRAYS EN C.
Informática II Prof. Dr. Gustavo Patiño MJ
Informática II Prof. Dr. Gustavo Patiño MJ
Informática II Prof. Dr. Gustavo Patiño MJ
Programación por capas: Capa de Clases
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA CINCO CONSOLE.
TÉCNICO EN PROGRAMACIÓN DE SOFTWARE Instructor: Ingeniero Adrián Guerrero Taborda
Ingeniero Anyelo Quintero
Igor Santos Grueiro. Ahora tenemos datos y datos …
Registro en línea de obras Artísticas Por Oscar Eduardo Salazar Rojas.
Bases de Datos Relacionales
Manejo de Excepciones Agustín J. González ELO329.
TRINO ANDRADE G UNIVERSIDAD ECOTEC. PRESENTACIÓN DE OUTLOOK EXPRESS Microsoft Outlook Express es una herramienta necesaria que le permite administrar.
Subconsultas Avanzadas
1 UNIVERSIDAD TECNOLOGICA DE PEREIRA PROGRAMA DE TECNOLOGIA ELÉCTRICA 2014 NOTA: Este taller hace parte de la nota del 15% de la materia. Taller 1) Consultar.
Dirección de Planificación
Componentes sintácticos
ESTRUCTURA DE DATOS EN JAVA
UNITA - IBARRA TRIGGERS
Programación por Capas: Motor de templates, Vista y Controlador Diseño y Construcción de Productos de Software Daniel Correa Botero Jeferson David Ossa.
Valor X Valor Y Punto (0,0) Coordenadas.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Colegio de Bachilleres Plantel 13 Xochimilco-Tepepan Integrantes: Karen Elizabeth González Monroy Elizabeth De Jesús Vergara Grupo:308.
Especialista en Business Intelligence Integration Services SSIS Tareas de Flujo de Control (Parte I) Microsoft SQL Server 2008 R2 Suscribase a
Programación por Capas: Capas gestor de base de Datos y ORM Diseño y Construcción de Productos de Software Daniel Correa Botero Jeferson David Ossa Universidad.
Control de errores visual basic
Clientes Web [PHP] Paso de datos::GET.. Paso de datos Toda variable existe mientras nos encontremos en el mismo documento que fue declarada. Cuando me.
Metodología para solución de problemas
1 Manejo de Excepciones y otros Agustín J. González ELO-329.
Daniel Correa Botero.  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.
El modulo de Tareas. Esta presentación del modulo de Tareas del Salón Virtual Manhattan asume que ud. ya reviso los tutoriales previos de los módulos.
NUEVO DISEÑO SITIO WEB EXPLORA REGIÓN METROPOLITANA Resultados en cuanto a tráfico, posicionamiento y nuevas herramientas.
COLEGIO DE BACHILLERES PLANTEL 13 XOCHIMILCO-TEPEPAN MATERIA:TIC EQUIPO:21 PRESENTACION: BASE DE DATOS ALUMNAS: Adán Millán Sánchez.
Profesora: Laura Patricia Pinto Prieto Ingeniera de sistemas Introducción a Programación 3.
EQUIPO:#3 GRUPO:304 NOMBRES: Lizbeth Nava Barón y Erick Ali Mejía.
Ihr Logo PHP Parte 2 “php toma muchas sintaxis de lenguajes de alto nivel conocidos para poder trabajar”
Unidad 2: Tareas básicas de InfoPath 2010
CONBINACION DE CORRESPONDENCIA
Tema 11 Bases de Datos y el Lenguaje SQL
Utilizar Costo Promedio Ponderado en el Software Administrativo SAW
Introducción al lenguaje PROCESSING para ARDUINO
Graficas en la pantalla 2D. Generalidades Para visualizar la gráfica correspondiente a una función de una variable o una ecuación de dos variables se.
Cuadros Finales 2014 Dirección de informática. Nueva funcionalidad.
Febrero 2014 ORIENTACIONES PARA CARGUE DE LA EVALUACION DE DESEMPEÑO DOCENTE Y DIRECTIVO DOCENTE EN EL APLICATIVO HUMANO DE LA SED CHOCÓ.
MSSQL SERVER CURSO BÁSICO 1. DESCRIPCIÓN DEL CURSO. Sesión 4: Sentencia Insert,Transacciones,Insert general, Insert Select * From, Sentencia Update,Update.
¿Cómo programar un Botón para agregar registros a una base de datos?
ARRAYS Y COLECCIONES DE DATOS. ARRAYS Arrays – Matriz – Vector Elemento del lenguaje que nos permite agrupar un conjunto de valores del mismo tipo, y.
Helpers en ASP.NET MVC3. Introducción Los helpers son una herramienta muy potente para generar nuestro propio código HTML dentro de las vistas. Los helpers.
TUTORIAL: ELABORACIÓN DE ENCUESTAS EN Capacitación en Moodle para Docentes.
Prof. Manuel B. Sánchez. Declaración de Objetos Una vez que la clase ha sido implementada se pueden declarar objetos como variables locales de métodos.
Introducción a programación web Martin Esses. Formularios HTML se utilizan para pasar datos a un servidor. Un formulario HTML puede contener elementos.
Las interfaces Predicate y Function Versión Unidad Didáctica 17 Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
Prof. Manuel B. Sánchez.  El origen del término polimorfismo es simple: proviene de las palabras griegas poly (muchos) y morphos (forma) multiforme.
Introducción a programación web Martin Esses. En las presentaciones anteriores, vimos como enviar datos a un controlador usando POST y como generar formularios.
Crear una tabla (create table - sp_tables - sp_columns - drop table) Para ver las tablas existentes creadas por los usuarios en una base de datos usamos.
Helpers en ASP.NET MVC3. Introducción Los helpers son una herramienta muy potente para generar nuestro propio código HTML dentro de las vistas. Los helpers.
Transcripción de la presentación:

Programación por Capas: Capas gestor de base de Datos y ORM II Diseño y Construcción de Productos de Software Daniel Correa Botero Jeferson David Ossa Universidad Nacional de Colombia Sede Medellín 2013

Extracción de datos de múltiples tablas (example10.php) Código <?php require('./configs/include.php'); class c_multiples extends super_controller { public function display() { $cod['boss']['id']=1; $options['boss']['lvl2']="one"; $cod['clerk']['boss']=1; $options['clerk']['lvl2']="by_boss"; $components['boss']['clerk']=array("b_p"); $this->orm->connect(); $this->orm->read_data(array("boss","clerk"),$options,$cod); $boss = $this->orm->get_objects("boss",$components); $this->engine->assign('boss',$boss[0]); $this->engine->assign('title','Datos Multiples'); $this->engine->display('header.tpl'); $this->engine->display('multiples.tpl'); $this->engine->display('footer.tpl'); } public function run() { $this->display(); } $call = new c_multiples(); $call->run(); ?>

Extraer el jefe con el documento 1 y todas las personas a su mando

Personas a Cargo del jefe: {$boss->get('name')} - con id: {$boss- >get('id')} {section loop=$boss->components['clerk']['b_p'] name=i} Id: {$boss->components['clerk']['b_p'][i]->get('id')} Nombre: {$boss->components['clerk']['b_p'][i]->get('name')} Salario: {$boss->components['clerk']['b_p'][i]->get('salary')} {/section} Extracción de datos de múltiples tablas (multiples.tpl)

Funcion read_data: $this->orm->read_data(array("boss","person"),$options,$cod); Recordemos que esta función recibe 3 parámetros: - par1 (vector con nombres de las clases o tablas que se desean leer): en el ejemplo anterior solo deseábamos hacer una lectura de boss, pero en este ejemplo debemos hacer 2 lecturas una de boss para sacar la info del jefe con documento 1, y otra de person para sacar la info de todas las personas que tiene como jefe aquel con documento 1 - par2 ($options): enviamos los lvl2 diciendo que para ‘boss’ deseamos hacer una lectura de un solo boss por documento y para ‘clerk’ por el código del boss (en el caso de boss esta lectura es en base a su id donde sea igual a 1, en el caso de clerk es en base al atributo boss donde este sea igual a 1). - par3 ($cod): se envían los códigos de id y boss respectivamente para las clases 'boss' y ‘clerk' Explicación de funciones

Funcion get_objetcs: $boss = $this->orm->get_objects("boss",$components); Recordemos que esta función retorna objetos de la clase indicada por par1 y cuenta con 3 parámetros: - par1: nombre de la clase que se desea retorna en forma objetual (en este caso 'boss' ya que deseamos retornar un jefe con sus personas a cargo asignadas por dentro - pero también podría ser al contrario retornar las personas y a cada persona asignarle por dentro los datos de su jefe). - par2 ($components) $components['boss']['clerk']=array("b_p");: Debe completarse de la siguiente manera: $components[‘nombre_de_la_clase_a_la_que_se_le_desea_asignar_otra']['nombre_de_la_clase_que_ se_desea_agisnar'] = array('lista_de_las_relaciones_entre_las_clases') De este modo en el ejemplo actual estamos indicando que a la clase boss le queremos asignar elementos de la clase clerk, y que para poder asignar estos elementos se debe hacer una verificar de la relación b_p (esta relación se creo y se explico anteriormente en tutoriales de la capa clases). - par3 ($auxiliars): será visto en tutoriales posteriores.

De esta manera ya tenemos una lista de jefes con sus personas a cargo asignadas, como en este ejemplo sabemos que solo existe un jefe con id 1, entonces simplemente asignamos el jefe de la primera posición (posición cero) $this->engine->assign('boss',$boss[0]); Explicación de funciones

Agregar un nuevo switche de nivel 1, en la función insert en el db.php con lo siguiente Inserción de un objeto case "clerk": switch($options['lvl2']) { case "normal": $id=mysql_real_escape_string($object->get('id')); $name=mysql_real_escape_string($object->get('name')); $salary=mysql_real_escape_string($object->get('salary')); $boss=mysql_real_escape_string($object->get('boss')); $this->do_operation("INSERT INTO clerk (id, name, salary, boss) VALUES ('$id', '$name', '$salary', '$boss');"); break; } break;

Estas funciones pertenecen a la clase gestor de base de datos y son usadas dentro del db.php, ambas reciben un solo parámetro que es la consulta sql que se desea ejecutar La función get_data se utiliza cuando se desea obtener información de la base de datos (es usada en todos los selects) La función do_operation se usa para realizar el resto de operaciones en la base de datos las cuales no retornan información (es usada es insert, delete, update). Función do_operation y get_data del gestor de base de datos

Inserción de un objeto (insert.php)

Inserción de un objeto (código) insert.php <?php require('configs/include.php'); class c_insert extends super_controller { public function add() { $clerk = new clerk($this->post); if(is_empty($clerk->get('id'))) {throw_exception("Debe ingresar un id");} $this->orm->connect(); $this->orm->insert_data("normal",$clerk); $this->orm->close(); $this->type_warning = "success"; $this->msg_warning = "Persona agregada correctamente"; $this->temp_aux = 'message.tpl'; $this->engine->assign('type_warning',$this->type_warning); $this->engine->assign('msg_warning',$this->msg_warning); } public function display() { $this->engine->display('header.tpl'); $this->engine->display($this->temp_aux); $this->engine->display('insert.tpl'); $this->engine->display('footer.tpl'); } public function run() { try {if (isset($this->get->option)){$this->{$this->get->option}();}} catch (Exception $e) { $this->error=1; $this->msg_warning=$e- >getMessage(); $this->engine->assign('type_warning',$this- >type_warning); $this->engine->assign('msg_warning',$this- >msg_warning); $this->temp_aux = 'message.tpl'; } $this->display(); } $call = new c_insert(); $call->run(); ?>

Inserción de un objeto (insert.tpl) Agregar un empleado Ingrese el nombre: Ingrese el id: Ingrese el salario: Ingrese el jefe:

$this->type_warning = por defecto contiene el valor de error (color rojo) pero puede tomar los valores de: (information - success - error - alerts) $this->msg_warning = por defecto es vacio y se le debe asignar el mensaje que va a acompañar el tipo de error. $this-> error = por defecto es 0 y en caso de encontrar un error se debe cambiar a 1 Variables de manejo de error del controlador

Explicación función insert_data $this->orm->insert_data(par1, par2): - par1: recibe un string, el case de LVL2 del tipo de insert que se desea realizar, en el caso del ejemplo es igual a "normal" que es el caso que creamos anteriormente en el db.php para inserción de datos de clerk). - par2: recibe el objeto que se va a insertar en la base de datos (en este caso $clerk). Notas (ejercicio propuesto): - El ejemplo se podría modificar de tal manera que cuando se inserte un dato y este sea invalido se vuelva a cargar la información en el formulario, para esto se agrega la línea $this->engine->assign('object',$this->post); después de this->error==1 Y ademas se modifica el insert.tpl para que haga un if en cada input preguntando si esta seteado “object” y en caso afirmativo muestre los datos.

Función update_data $this->orm->update_data(par1, par2): - par1: recibe un string el LVL2 al cual se desea acceder a hacer el udpate (por lo general se usa el el case "normal" y se crea un switche de nivel 2 en los updates en el gestor de base de datos con ese caso normal). - par2: recibe el objeto que se va a editar en la base de datos. Nota: es importante resaltar que si se desea editar un objeto y se permite editar la clave primaria, entonces en este caso se deberá enviar la clave primaria inicial en una variable adicional (en este caso se usa el vector auxiliars definido en todas las clases) esto para poder hacer la edición. Por ejemplo: supongamos que deseamos editar el documento de una persona, para ese fin es importante guardar en $clerk->auxiliars[‘id_aux’] el id inicial y en $clerk->id el nuevo documento Para acceder y asignar valores a auxiliars NO ES NECESARIO usar las funciones GET y SET debido a que no son variables principales de la clase.

$this->orm->delete_data(par1, par2) - par1: recibe un string con el case de LVL2 que se desea realizar el borrado (normalmente se usa "normal" que es el caso básico que se crea en db.php en cada clase para el borrado de datos). - par2: recibe el objeto que se va a borrar de la base de datos (por lo general se envía un objeto solo con la clave primaria asignada) Función delete_data

Crear un controlador, que permita ingresar un id de una clerk, luego en base a ese id muestre la información del clerk y finalmente permita editarla. Si se ingresa un documento invalido, el controlador debe mostrar un mensaje indicando el error. En la parte de la edición de la persona no es necesario validar datos. Actividad 3 (Edición de datos)

actividad3.php caso inicial (pantallazo por defecto):

actividad3.php caso inicial con id erróneo:

actividad3.php caso inicial satisfactorio (caso secundario edición de datos)

actividad3.php caso secundario satisfactorio: