SlideShare uma empresa Scribd logo
1 de 8
Baixar para ler offline
MVC
Mantenimiento de Usuarios
Funciones:
 Registrar
 Buscar
 Listar
 Editar
 Eliminar
Directorio
Vista
Index.php
<?php
require_once('Vista/Menu.php');
if(isset($_GET['action']))
{
if($_GET['action'] == 'agregar')
{
require 'Vista/Registrar.php';
}
elseif($_GET['action'] == 'buscar')
{
require 'Vista/Buscar.php';
}
}
?>
Menu.php
<div id="menu">
<ul>
<li><a href="../index.php">Inicio</a></li>
<li><a href="../index.php?action=agregar">Registrar</a></li>
<li><a href="../index.php?action=buscar">Buscar</a></li>
</ul>
</div>
Registrar.php
<h1>Registrar Usuario</h1>
<form id="registrar_usuario" action="../Controlador/UsuarioControlador.php"
method="POST">
<div>E-mail</div>
<div><input type="text" name="email" id="email"></div>
<div>Clave</div>
<div><input type="password" name="clave" id="clave"></div>
<div>Nombre</div>
<div><input type="text" name="nombre" id="nombre"></div>
<div>Apellido</div>
<div><input type="text" name="apellido" id="apellido"></div>
<div><input type="submit" name="accion" id="enviar" value="Registrar"></div>
</form>
Buscar.php
<h1>Buscar</h1>
<form id="buscar_usuario" action="../Controlador/UsuarioControlador.php" method="POST">
<div>Nombre</div>
<div><input type="text" name="nombre" id="nombre"></div>
<div><input type="submit" name="accion" id="enviar" value="Buscar"></div>
</form>
Listar.php
<h1>Listado de Usuarios</h1>
<table>
<tr>
<th>Nombre</th>
<th>Apellidos</th>
<th>Mail</th>
<th colspan="2">Accion</th>
</tr>
<?php foreach ($usuario->Usuarios as $u){?>
<tr>
<td><?php echo $u['nombre'] ?></td>
<td><?php echo $u['apellido'] ?></td>
<td><?php echo $u['email'] ?></td>
<form id="editar_usuario" action="../Controlador/UsuarioControlador.php"
method="POST">
<input type="hidden" name="id" id="accion" value="<?=$u['id']?>">
<td><input type="submit" name="accion" id="accion" value="Editar"></td>
<form id="editar_usuario" action="../Controlador/UsuarioControlador.php"
method="POST">
<input type="hidden" name="id" id="accion" value="<?=$u['id']?>">
<td><input type="submit" name="accion" id="accion" value="Eliminar"></td>
</tr>
</form>
<?php } ?>
</table>
Actualizar.php
<h1>Editar Usuario</h1>
<form id="actualizar_usuario" action="../Controlador/UsuarioControlador.php"
method="POST">
<input type="hidden" name="id" id="accion" value="{id}">
<div>E-mail</div>
<div><input type="text" name="email" id="email" value="{email}"></div>
<div>Nombre</div>
<div><input type="text" name="nombre" id="nombre" value="{nombre}"></div>
<div>Apellido</div>
<div><input type="text" name="apellido" id="apellido" value="{apellido}"></div>
<div><input type="submit" name="accion" id="enviar" value="Actualizar"></div>
</form>
Mensaje.php
<div><a href="../Index.php">Index.php</a></div>
<div>{Mensaje}</div>
Controlador
UsuarioControlador.php
<?php
require_once('../Modelo/UsuarioModelo.php');
Manejador();
$accion=$_POST['accion'];
if($accion=="Registrar")
{
$vista = file_get_contents('../Vista/Mensaje.php');
$usuario = new UsuarioModel();
function Manejador()
{
$usuario->set(DatosUsuario());
$valor = $usuario->mensaje;
$vista = str_replace('{Mensaje}', $valor, $vista);
print($vista);
}elseif($accion=="Buscar")
{
$usuario = new UsuarioModel();
$usuario->getByName($_POST['nombre']);
require_once('../Vista/Menu.php');
require_once('../Vista/Buscar.php');
require_once('../Vista/Listar.php');
}elseif($accion=="Editar")
{
$vista = file_get_contents('../Vista/Actualizar.php');
$usuario = new UsuarioModel();
$usuario->get($_POST['id']);
foreach ($usuario as $clave=>$valor)
{
$vista = str_replace('{'.$clave.'}', $valor, $vista);
}
print($vista);
}elseif($accion=="Actualizar")
{
$vista = file_get_contents('../Vista/Mensaje.php');
$usuario = new UsuarioModel();
$usuario->edit(DatosUsuario());
$valor = $usuario->mensaje;
$vista = str_replace('{Mensaje}', $valor, $vista);
require_once('../Vista/Menu.php');
print($vista);
}elseif($accion=="Eliminar")
{
$vista = file_get_contents('../Vista/Mensaje.php');
$usuario = new UsuarioModel();
$usuario->delete($_POST['id']);
$valor = $usuario->mensaje;
$vista = str_replace('{Mensaje}', $valor, $vista);
print($vista);
}
}
function DatosUsuario()
{
$user_data = array();
if($_POST)
{
if(array_key_exists('id', $_POST)) {
$user_data['id'] = $_POST['id'];
}
if(array_key_exists('nombre', $_POST)) {
$user_data['nombre'] = $_POST['nombre'];
}
if(array_key_exists('apellido', $_POST)) {
$user_data['apellido'] = $_POST['apellido'];
}
if(array_key_exists('email', $_POST)) {
$user_data['email'] = $_POST['email'];
}
if(array_key_exists('clave', $_POST)) {
$user_data['clave'] = $_POST['clave'];
}
} else if($_GET) {
if(array_key_exists('email', $_GET)) {
$user_data = $_GET['email'];
}
}
return $user_data;
}
?>
Modelo
DataBase.php
<?php
abstract class DataBase {
private static $db_host = 'localhost';
private static $db_user = 'mvc';
private static $db_pass = 'mvc';
protected $db_name = 'mvc';
protected $query;
protected $rows = array();
private $conn;
public $mensaje = 'Hecho';
# métodos abstractos para ABM de clases que hereden
abstract protected function get();
abstract protected function set();
abstract protected function edit();
abstract protected function delete();
# los siguientes métodos pueden definirse con exactitud y
# no son abstractos
# Conectar a la base de datos
private function open_connection()
{
$this->conn = new mysqli(self::$db_host, self::$db_user,
self::$db_pass, $this->db_name);
}
# Desconectar la base de datos
private function close_connection()
{
$this->conn->close();
}
# Ejecutar un query simple del tipo INSERT, DELETE, UPDATE
protected function execute_single_query()
{
if($_POST)
{
$this->open_connection();
$this->conn->query($this->query);
$this->close_connection();
} else {
$this->mensaje = 'Metodo no permitido';
}
}
# Traer resultados de una consulta en un Array
protected function get_results_from_query()
{
$this->open_connection();
$result = $this->conn->query($this->query);
while ($this->rows[] = $result->fetch_assoc());
$result->close();
$this->close_connection();
array_pop($this->rows);
}
}
?>
UsuarioModelo.php
<?php
# Importar modelo de abstracción de base de datos
require_once('DataBase.php');
class UsuarioModel extends DataBase {
############################### PROPIEDADES ################################
public $nombre;
public $apellido;
public $email;
private $clave;
public $id;
public $Usuarios;
# Traer datos de un usuario
public function get($id='')
{
if($id != '')
{
$this->query = "
SELECT id, nombre, apellido, email, clave
FROM usuarios
WHERE id = $id
";
$this->get_results_from_query();
}
if(count($this->rows) == 1)
{
foreach ($this->rows[0] as $propiedad=>$valor)
{
$this->$propiedad = $valor;
}
}
}
public function getByName($nombre='')
{
$this->query = "
SELECT id, nombre, apellido, email, clave
FROM usuarios
WHERE nombre LIKE '$nombre%'
";
$this->get_results_from_query();
$this->Usuarios = $this->rows;
}
# Crear un nuevo usuario
public function set($user_data=array())
{
if(array_key_exists('email', $user_data))
{
foreach ($user_data as $campo=>$valor)
{
$$campo = $valor;
}
$this->query = "
INSERT INTO usuarios
(nombre, apellido, email, clave)
VALUES
('$nombre', '$apellido', '$email', '$clave')
";
$this->execute_single_query();
$this->mensaje = 'Usuario agregado exitosamente';
} else {
$this->mensaje = 'No se ha agregado al usuario';
}
}
# Modificar un usuario
public function edit($user_data=array())
{
foreach ($user_data as $campo=>$valor)
{
$$campo = $valor;
}
$this->query = "
UPDATE usuarios
SET nombre='$nombre',
apellido='$apellido',
email='$email',
WHERE id = '$id'
";
$this->execute_single_query();
$this->mensaje = 'Usuario modificado';
}
# Eliminar un usuario
public function delete($id='')
{
$this->query = "
DELETE FROM usuarios
WHERE id = '$id'
";
$this->execute_single_query();
$this->mensaje = 'Usuario eliminado';
}
# Método constructor
function __construct()
{
$this->db_name = 'mvc';
}
# Método destructor del objeto
function __destruct()
{
unset($this);
}
}
?>
Creacion de Tabla
CREATE TABLE usuarios (id INT(11) NOT NULL AUTO_INCREMENT, nombre VARCHAR(100), apellido
VARCHAR(100), email VARCHAR(100), clave VARCHAR(25), PRIMARY KEY(id))
Referencias
http://www.etnassoft.com/biblioteca/poo-y-mvc-en-php/
http://librosweb.es/symfony_1_2/capitulo_2/el_patron_mvc.html
http://www.jc-mouse.net/proyectos/mvc-modelo-vista-y-controlador-en-php

Mais conteúdo relacionado

Mais procurados

Desarrollo código mantenible en WordPress utilizando Symfony
Desarrollo código mantenible en WordPress utilizando SymfonyDesarrollo código mantenible en WordPress utilizando Symfony
Desarrollo código mantenible en WordPress utilizando SymfonyAsier Marqués
 
Procesar estado
Procesar estadoProcesar estado
Procesar estadoLismirabal
 
Php y my sql con manejo de sesiones
Php y my sql con manejo de sesionesPhp y my sql con manejo de sesiones
Php y my sql con manejo de sesionescapo1988
 
Programa que almacena en una base de datos las características de un carro co...
Programa que almacena en una base de datos las características de un carro co...Programa que almacena en una base de datos las características de un carro co...
Programa que almacena en una base de datos las características de un carro co...jbersosa
 
Practica utilizacion de beans en jsp
Practica  utilizacion de beans en jspPractica  utilizacion de beans en jsp
Practica utilizacion de beans en jspBoris Salleg
 
Drupal7 para desarrolladores
Drupal7 para desarrolladoresDrupal7 para desarrolladores
Drupal7 para desarrolladoresPedro Cambra
 
Procesar estado
Procesar estadoProcesar estado
Procesar estadoLismirabal
 
Conexión a postgres desde
Conexión a postgres desdeConexión a postgres desde
Conexión a postgres desdejbersosa
 
Práctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScriptPráctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScriptjubacalo
 

Mais procurados (20)

Jacqueline nuñez pacco
Jacqueline nuñez paccoJacqueline nuñez pacco
Jacqueline nuñez pacco
 
Desarrollo código mantenible en WordPress utilizando Symfony
Desarrollo código mantenible en WordPress utilizando SymfonyDesarrollo código mantenible en WordPress utilizando Symfony
Desarrollo código mantenible en WordPress utilizando Symfony
 
Procesar estado
Procesar estadoProcesar estado
Procesar estado
 
Insert
InsertInsert
Insert
 
Julissa huaman hilari
Julissa huaman hilariJulissa huaman hilari
Julissa huaman hilari
 
Php y my sql con manejo de sesiones
Php y my sql con manejo de sesionesPhp y my sql con manejo de sesiones
Php y my sql con manejo de sesiones
 
Sumaoctal
SumaoctalSumaoctal
Sumaoctal
 
Doctrine2 sf2Vigo
Doctrine2 sf2VigoDoctrine2 sf2Vigo
Doctrine2 sf2Vigo
 
Programa que almacena en una base de datos las características de un carro co...
Programa que almacena en una base de datos las características de un carro co...Programa que almacena en una base de datos las características de un carro co...
Programa que almacena en una base de datos las características de un carro co...
 
Practica utilizacion de beans en jsp
Practica  utilizacion de beans en jspPractica  utilizacion de beans en jsp
Practica utilizacion de beans en jsp
 
Introducción a los hooks
Introducción a los hooksIntroducción a los hooks
Introducción a los hooks
 
Php2
Php2 Php2
Php2
 
Documentacion
DocumentacionDocumentacion
Documentacion
 
Java beans en jsp
Java beans en jspJava beans en jsp
Java beans en jsp
 
Drupal7 para desarrolladores
Drupal7 para desarrolladoresDrupal7 para desarrolladores
Drupal7 para desarrolladores
 
Procesar estado
Procesar estadoProcesar estado
Procesar estado
 
Php
PhpPhp
Php
 
Conexión a postgres desde
Conexión a postgres desdeConexión a postgres desde
Conexión a postgres desde
 
Práctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScriptPráctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScript
 
Symfony2 - ACL
Symfony2 - ACLSymfony2 - ACL
Symfony2 - ACL
 

Semelhante a Mantenimiento de Usuarios usando MVC ver1

Semelhante a Mantenimiento de Usuarios usando MVC ver1 (20)

Presentacion YII
Presentacion YIIPresentacion YII
Presentacion YII
 
Guia N5 Proyectos Web Consultas Php Y My Sql
Guia N5   Proyectos Web   Consultas Php Y My SqlGuia N5   Proyectos Web   Consultas Php Y My Sql
Guia N5 Proyectos Web Consultas Php Y My Sql
 
Anthony saravia documentacion-php
Anthony saravia documentacion-phpAnthony saravia documentacion-php
Anthony saravia documentacion-php
 
Conceptos basicos en CakePHP
Conceptos basicos en CakePHPConceptos basicos en CakePHP
Conceptos basicos en CakePHP
 
Conexion
ConexionConexion
Conexion
 
Modelo vista controlador
Modelo vista controladorModelo vista controlador
Modelo vista controlador
 
Informe grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencaInforme grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuenca
 
EXAMEN
EXAMENEXAMEN
EXAMEN
 
I2 u4
I2 u4I2 u4
I2 u4
 
Vulnerabilidades en aplicaciones web
Vulnerabilidades en aplicaciones webVulnerabilidades en aplicaciones web
Vulnerabilidades en aplicaciones web
 
Jacqueline nuñez pacco
Jacqueline nuñez paccoJacqueline nuñez pacco
Jacqueline nuñez pacco
 
Bases de datos con PHP y Mysqli
Bases de datos con PHP y MysqliBases de datos con PHP y Mysqli
Bases de datos con PHP y Mysqli
 
Validaracceso
ValidaraccesoValidaracceso
Validaracceso
 
Validaracceso
ValidaraccesoValidaracceso
Validaracceso
 
Jquery para principianes
Jquery para principianesJquery para principianes
Jquery para principianes
 
J M E R L I N P H P
J M E R L I N P H PJ M E R L I N P H P
J M E R L I N P H P
 
Introducción a DJango
Introducción a DJangoIntroducción a DJango
Introducción a DJango
 
Php excel
Php excelPhp excel
Php excel
 
Documentacion jhon elvis_quispe_gutierrez
Documentacion jhon elvis_quispe_gutierrezDocumentacion jhon elvis_quispe_gutierrez
Documentacion jhon elvis_quispe_gutierrez
 
En 20 minutos ... jQuery
En 20 minutos ... jQueryEn 20 minutos ... jQuery
En 20 minutos ... jQuery
 

Último

Guía para la identificación de materiales peligrosos
Guía para la identificación de materiales peligrososGuía para la identificación de materiales peligrosos
Guía para la identificación de materiales peligrososAdrianVarela22
 
electricidad básica, ejemplos prácticos y ejercicios
electricidad básica, ejemplos prácticos y ejercicioselectricidad básica, ejemplos prácticos y ejercicios
electricidad básica, ejemplos prácticos y ejerciciosEfrain Yungan
 
INSTRUCTIVO_NNNNNNNNNNNNNNSART2 iess.pdf
INSTRUCTIVO_NNNNNNNNNNNNNNSART2 iess.pdfINSTRUCTIVO_NNNNNNNNNNNNNNSART2 iess.pdf
INSTRUCTIVO_NNNNNNNNNNNNNNSART2 iess.pdfautomatechcv
 
presentación de topografía y sus aplicaciones
presentación de topografía y sus aplicacionespresentación de topografía y sus aplicaciones
presentación de topografía y sus aplicacionesCarlosA427496
 
EXPOSICION UNIDAD 3 MANTENIMIENTOO .pptx
EXPOSICION UNIDAD 3 MANTENIMIENTOO .pptxEXPOSICION UNIDAD 3 MANTENIMIENTOO .pptx
EXPOSICION UNIDAD 3 MANTENIMIENTOO .pptxKeylaArlethTorresOrt
 
Análisis de Varianza- Anova y pruebas de estadística
Análisis de Varianza- Anova y pruebas de estadísticaAnálisis de Varianza- Anova y pruebas de estadística
Análisis de Varianza- Anova y pruebas de estadísticaJoellyAlejandraRodrg
 
Sales Básicas Quimica, conocer como se forman las sales basicas
Sales Básicas Quimica, conocer como se forman las sales basicasSales Básicas Quimica, conocer como se forman las sales basicas
Sales Básicas Quimica, conocer como se forman las sales basicasPaulina Cargua
 
ESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTO
ESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTOESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTO
ESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTOCamiloSaavedra30
 
Sistema de Base de Datos para renta de trajes
Sistema de Base de Datos para renta de trajesSistema de Base de Datos para renta de trajes
Sistema de Base de Datos para renta de trajesjohannyrmnatejeda
 
Sanidad en alpacas, enfermedades infecciosas y parasitarias
Sanidad en alpacas, enfermedades infecciosas y parasitariasSanidad en alpacas, enfermedades infecciosas y parasitarias
Sanidad en alpacas, enfermedades infecciosas y parasitariasJilvertHuisaCenteno
 
movimiento circular univormemente variado
movimiento circular univormemente variadomovimiento circular univormemente variado
movimiento circular univormemente variadoEsthefaniaAuquilla1
 
La Evolución Industrial en el Ecuador.pdf
La Evolución Industrial en el Ecuador.pdfLa Evolución Industrial en el Ecuador.pdf
La Evolución Industrial en el Ecuador.pdfAnthony Gualpa
 
R. Contraloria 432-2023-CG obras x AD.pdf
R. Contraloria 432-2023-CG obras x AD.pdfR. Contraloria 432-2023-CG obras x AD.pdf
R. Contraloria 432-2023-CG obras x AD.pdfrudy cabezas
 
Sistema Séptico Domiciliario para viviendas rurales
Sistema Séptico Domiciliario para viviendas ruralesSistema Séptico Domiciliario para viviendas rurales
Sistema Séptico Domiciliario para viviendas ruralesrberinald
 
INFORME DE LA DE PROBLEMÁTICA AMBIENTAL 2 UNIDAD FINAL. PDF.pdf
INFORME DE LA DE PROBLEMÁTICA AMBIENTAL 2 UNIDAD FINAL. PDF.pdfINFORME DE LA DE PROBLEMÁTICA AMBIENTAL 2 UNIDAD FINAL. PDF.pdf
INFORME DE LA DE PROBLEMÁTICA AMBIENTAL 2 UNIDAD FINAL. PDF.pdfsolidalilaalvaradoro
 
GeoS4344444444444444444444444444444444.pdf
GeoS4344444444444444444444444444444444.pdfGeoS4344444444444444444444444444444444.pdf
GeoS4344444444444444444444444444444444.pdffredyflores58
 
Introduccion-a-los-tipos-de-cemento (1).pdf
Introduccion-a-los-tipos-de-cemento (1).pdfIntroduccion-a-los-tipos-de-cemento (1).pdf
Introduccion-a-los-tipos-de-cemento (1).pdfjhorbycoralsanchez
 
Accidente mortal con un Torno mecánico.pptx
Accidente mortal con un Torno mecánico.pptxAccidente mortal con un Torno mecánico.pptx
Accidente mortal con un Torno mecánico.pptxBuddyroi
 
PRESENTACIÓN ANALISIS ESTRUCTURAL II.pptx
PRESENTACIÓN ANALISIS ESTRUCTURAL II.pptxPRESENTACIÓN ANALISIS ESTRUCTURAL II.pptx
PRESENTACIÓN ANALISIS ESTRUCTURAL II.pptxStibeCr
 
TEMA 02 VISCOSIDAD DE MECÁNICA DE FLUIDOS .pdf
TEMA 02 VISCOSIDAD DE MECÁNICA DE FLUIDOS .pdfTEMA 02 VISCOSIDAD DE MECÁNICA DE FLUIDOS .pdf
TEMA 02 VISCOSIDAD DE MECÁNICA DE FLUIDOS .pdfJhonCongoraQuispe
 

Último (20)

Guía para la identificación de materiales peligrosos
Guía para la identificación de materiales peligrososGuía para la identificación de materiales peligrosos
Guía para la identificación de materiales peligrosos
 
electricidad básica, ejemplos prácticos y ejercicios
electricidad básica, ejemplos prácticos y ejercicioselectricidad básica, ejemplos prácticos y ejercicios
electricidad básica, ejemplos prácticos y ejercicios
 
INSTRUCTIVO_NNNNNNNNNNNNNNSART2 iess.pdf
INSTRUCTIVO_NNNNNNNNNNNNNNSART2 iess.pdfINSTRUCTIVO_NNNNNNNNNNNNNNSART2 iess.pdf
INSTRUCTIVO_NNNNNNNNNNNNNNSART2 iess.pdf
 
presentación de topografía y sus aplicaciones
presentación de topografía y sus aplicacionespresentación de topografía y sus aplicaciones
presentación de topografía y sus aplicaciones
 
EXPOSICION UNIDAD 3 MANTENIMIENTOO .pptx
EXPOSICION UNIDAD 3 MANTENIMIENTOO .pptxEXPOSICION UNIDAD 3 MANTENIMIENTOO .pptx
EXPOSICION UNIDAD 3 MANTENIMIENTOO .pptx
 
Análisis de Varianza- Anova y pruebas de estadística
Análisis de Varianza- Anova y pruebas de estadísticaAnálisis de Varianza- Anova y pruebas de estadística
Análisis de Varianza- Anova y pruebas de estadística
 
Sales Básicas Quimica, conocer como se forman las sales basicas
Sales Básicas Quimica, conocer como se forman las sales basicasSales Básicas Quimica, conocer como se forman las sales basicas
Sales Básicas Quimica, conocer como se forman las sales basicas
 
ESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTO
ESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTOESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTO
ESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTO
 
Sistema de Base de Datos para renta de trajes
Sistema de Base de Datos para renta de trajesSistema de Base de Datos para renta de trajes
Sistema de Base de Datos para renta de trajes
 
Sanidad en alpacas, enfermedades infecciosas y parasitarias
Sanidad en alpacas, enfermedades infecciosas y parasitariasSanidad en alpacas, enfermedades infecciosas y parasitarias
Sanidad en alpacas, enfermedades infecciosas y parasitarias
 
movimiento circular univormemente variado
movimiento circular univormemente variadomovimiento circular univormemente variado
movimiento circular univormemente variado
 
La Evolución Industrial en el Ecuador.pdf
La Evolución Industrial en el Ecuador.pdfLa Evolución Industrial en el Ecuador.pdf
La Evolución Industrial en el Ecuador.pdf
 
R. Contraloria 432-2023-CG obras x AD.pdf
R. Contraloria 432-2023-CG obras x AD.pdfR. Contraloria 432-2023-CG obras x AD.pdf
R. Contraloria 432-2023-CG obras x AD.pdf
 
Sistema Séptico Domiciliario para viviendas rurales
Sistema Séptico Domiciliario para viviendas ruralesSistema Séptico Domiciliario para viviendas rurales
Sistema Séptico Domiciliario para viviendas rurales
 
INFORME DE LA DE PROBLEMÁTICA AMBIENTAL 2 UNIDAD FINAL. PDF.pdf
INFORME DE LA DE PROBLEMÁTICA AMBIENTAL 2 UNIDAD FINAL. PDF.pdfINFORME DE LA DE PROBLEMÁTICA AMBIENTAL 2 UNIDAD FINAL. PDF.pdf
INFORME DE LA DE PROBLEMÁTICA AMBIENTAL 2 UNIDAD FINAL. PDF.pdf
 
GeoS4344444444444444444444444444444444.pdf
GeoS4344444444444444444444444444444444.pdfGeoS4344444444444444444444444444444444.pdf
GeoS4344444444444444444444444444444444.pdf
 
Introduccion-a-los-tipos-de-cemento (1).pdf
Introduccion-a-los-tipos-de-cemento (1).pdfIntroduccion-a-los-tipos-de-cemento (1).pdf
Introduccion-a-los-tipos-de-cemento (1).pdf
 
Accidente mortal con un Torno mecánico.pptx
Accidente mortal con un Torno mecánico.pptxAccidente mortal con un Torno mecánico.pptx
Accidente mortal con un Torno mecánico.pptx
 
PRESENTACIÓN ANALISIS ESTRUCTURAL II.pptx
PRESENTACIÓN ANALISIS ESTRUCTURAL II.pptxPRESENTACIÓN ANALISIS ESTRUCTURAL II.pptx
PRESENTACIÓN ANALISIS ESTRUCTURAL II.pptx
 
TEMA 02 VISCOSIDAD DE MECÁNICA DE FLUIDOS .pdf
TEMA 02 VISCOSIDAD DE MECÁNICA DE FLUIDOS .pdfTEMA 02 VISCOSIDAD DE MECÁNICA DE FLUIDOS .pdf
TEMA 02 VISCOSIDAD DE MECÁNICA DE FLUIDOS .pdf
 

Mantenimiento de Usuarios usando MVC ver1

  • 1. MVC Mantenimiento de Usuarios Funciones:  Registrar  Buscar  Listar  Editar  Eliminar Directorio Vista Index.php <?php require_once('Vista/Menu.php'); if(isset($_GET['action'])) { if($_GET['action'] == 'agregar') { require 'Vista/Registrar.php'; } elseif($_GET['action'] == 'buscar') { require 'Vista/Buscar.php'; } } ?> Menu.php <div id="menu"> <ul> <li><a href="../index.php">Inicio</a></li> <li><a href="../index.php?action=agregar">Registrar</a></li> <li><a href="../index.php?action=buscar">Buscar</a></li> </ul> </div>
  • 2. Registrar.php <h1>Registrar Usuario</h1> <form id="registrar_usuario" action="../Controlador/UsuarioControlador.php" method="POST"> <div>E-mail</div> <div><input type="text" name="email" id="email"></div> <div>Clave</div> <div><input type="password" name="clave" id="clave"></div> <div>Nombre</div> <div><input type="text" name="nombre" id="nombre"></div> <div>Apellido</div> <div><input type="text" name="apellido" id="apellido"></div> <div><input type="submit" name="accion" id="enviar" value="Registrar"></div> </form> Buscar.php <h1>Buscar</h1> <form id="buscar_usuario" action="../Controlador/UsuarioControlador.php" method="POST"> <div>Nombre</div> <div><input type="text" name="nombre" id="nombre"></div> <div><input type="submit" name="accion" id="enviar" value="Buscar"></div> </form> Listar.php <h1>Listado de Usuarios</h1> <table> <tr> <th>Nombre</th> <th>Apellidos</th> <th>Mail</th> <th colspan="2">Accion</th> </tr> <?php foreach ($usuario->Usuarios as $u){?> <tr> <td><?php echo $u['nombre'] ?></td> <td><?php echo $u['apellido'] ?></td> <td><?php echo $u['email'] ?></td> <form id="editar_usuario" action="../Controlador/UsuarioControlador.php" method="POST"> <input type="hidden" name="id" id="accion" value="<?=$u['id']?>"> <td><input type="submit" name="accion" id="accion" value="Editar"></td> <form id="editar_usuario" action="../Controlador/UsuarioControlador.php" method="POST"> <input type="hidden" name="id" id="accion" value="<?=$u['id']?>"> <td><input type="submit" name="accion" id="accion" value="Eliminar"></td> </tr> </form> <?php } ?> </table> Actualizar.php
  • 3. <h1>Editar Usuario</h1> <form id="actualizar_usuario" action="../Controlador/UsuarioControlador.php" method="POST"> <input type="hidden" name="id" id="accion" value="{id}"> <div>E-mail</div> <div><input type="text" name="email" id="email" value="{email}"></div> <div>Nombre</div> <div><input type="text" name="nombre" id="nombre" value="{nombre}"></div> <div>Apellido</div> <div><input type="text" name="apellido" id="apellido" value="{apellido}"></div> <div><input type="submit" name="accion" id="enviar" value="Actualizar"></div> </form> Mensaje.php <div><a href="../Index.php">Index.php</a></div> <div>{Mensaje}</div> Controlador UsuarioControlador.php <?php require_once('../Modelo/UsuarioModelo.php'); Manejador(); $accion=$_POST['accion']; if($accion=="Registrar") { $vista = file_get_contents('../Vista/Mensaje.php'); $usuario = new UsuarioModel(); function Manejador() { $usuario->set(DatosUsuario()); $valor = $usuario->mensaje; $vista = str_replace('{Mensaje}', $valor, $vista); print($vista); }elseif($accion=="Buscar") { $usuario = new UsuarioModel(); $usuario->getByName($_POST['nombre']); require_once('../Vista/Menu.php'); require_once('../Vista/Buscar.php'); require_once('../Vista/Listar.php'); }elseif($accion=="Editar") { $vista = file_get_contents('../Vista/Actualizar.php'); $usuario = new UsuarioModel(); $usuario->get($_POST['id']); foreach ($usuario as $clave=>$valor) { $vista = str_replace('{'.$clave.'}', $valor, $vista); } print($vista); }elseif($accion=="Actualizar") { $vista = file_get_contents('../Vista/Mensaje.php'); $usuario = new UsuarioModel(); $usuario->edit(DatosUsuario()); $valor = $usuario->mensaje; $vista = str_replace('{Mensaje}', $valor, $vista); require_once('../Vista/Menu.php'); print($vista); }elseif($accion=="Eliminar")
  • 4. { $vista = file_get_contents('../Vista/Mensaje.php'); $usuario = new UsuarioModel(); $usuario->delete($_POST['id']); $valor = $usuario->mensaje; $vista = str_replace('{Mensaje}', $valor, $vista); print($vista); } } function DatosUsuario() { $user_data = array(); if($_POST) { if(array_key_exists('id', $_POST)) { $user_data['id'] = $_POST['id']; } if(array_key_exists('nombre', $_POST)) { $user_data['nombre'] = $_POST['nombre']; } if(array_key_exists('apellido', $_POST)) { $user_data['apellido'] = $_POST['apellido']; } if(array_key_exists('email', $_POST)) { $user_data['email'] = $_POST['email']; } if(array_key_exists('clave', $_POST)) { $user_data['clave'] = $_POST['clave']; } } else if($_GET) { if(array_key_exists('email', $_GET)) { $user_data = $_GET['email']; } } return $user_data; } ?> Modelo DataBase.php <?php abstract class DataBase { private static $db_host = 'localhost'; private static $db_user = 'mvc'; private static $db_pass = 'mvc'; protected $db_name = 'mvc'; protected $query; protected $rows = array(); private $conn; public $mensaje = 'Hecho'; # métodos abstractos para ABM de clases que hereden abstract protected function get(); abstract protected function set(); abstract protected function edit(); abstract protected function delete(); # los siguientes métodos pueden definirse con exactitud y # no son abstractos # Conectar a la base de datos private function open_connection() { $this->conn = new mysqli(self::$db_host, self::$db_user, self::$db_pass, $this->db_name); } # Desconectar la base de datos private function close_connection()
  • 5. { $this->conn->close(); } # Ejecutar un query simple del tipo INSERT, DELETE, UPDATE protected function execute_single_query() { if($_POST) { $this->open_connection(); $this->conn->query($this->query); $this->close_connection(); } else { $this->mensaje = 'Metodo no permitido'; } } # Traer resultados de una consulta en un Array protected function get_results_from_query() { $this->open_connection(); $result = $this->conn->query($this->query); while ($this->rows[] = $result->fetch_assoc()); $result->close(); $this->close_connection(); array_pop($this->rows); } } ?> UsuarioModelo.php <?php # Importar modelo de abstracción de base de datos require_once('DataBase.php'); class UsuarioModel extends DataBase { ############################### PROPIEDADES ################################ public $nombre; public $apellido; public $email; private $clave; public $id; public $Usuarios; # Traer datos de un usuario public function get($id='') { if($id != '') { $this->query = " SELECT id, nombre, apellido, email, clave FROM usuarios WHERE id = $id "; $this->get_results_from_query(); } if(count($this->rows) == 1) { foreach ($this->rows[0] as $propiedad=>$valor) { $this->$propiedad = $valor; } } } public function getByName($nombre='') { $this->query = " SELECT id, nombre, apellido, email, clave
  • 6. FROM usuarios WHERE nombre LIKE '$nombre%' "; $this->get_results_from_query(); $this->Usuarios = $this->rows; } # Crear un nuevo usuario public function set($user_data=array()) { if(array_key_exists('email', $user_data)) { foreach ($user_data as $campo=>$valor) { $$campo = $valor; } $this->query = " INSERT INTO usuarios (nombre, apellido, email, clave) VALUES ('$nombre', '$apellido', '$email', '$clave') "; $this->execute_single_query(); $this->mensaje = 'Usuario agregado exitosamente'; } else { $this->mensaje = 'No se ha agregado al usuario'; } } # Modificar un usuario public function edit($user_data=array()) { foreach ($user_data as $campo=>$valor) { $$campo = $valor; } $this->query = " UPDATE usuarios SET nombre='$nombre', apellido='$apellido', email='$email', WHERE id = '$id' "; $this->execute_single_query(); $this->mensaje = 'Usuario modificado'; } # Eliminar un usuario public function delete($id='') { $this->query = " DELETE FROM usuarios WHERE id = '$id' "; $this->execute_single_query(); $this->mensaje = 'Usuario eliminado'; } # Método constructor function __construct() { $this->db_name = 'mvc'; } # Método destructor del objeto function __destruct() { unset($this); } } ?>
  • 7. Creacion de Tabla CREATE TABLE usuarios (id INT(11) NOT NULL AUTO_INCREMENT, nombre VARCHAR(100), apellido VARCHAR(100), email VARCHAR(100), clave VARCHAR(25), PRIMARY KEY(id))