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

Procesar estado
Procesar estadoProcesar estado
Procesar estado
Lismirabal
 
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
capo1988
 
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 jsp
Boris Salleg
 
Procesar estado
Procesar estadoProcesar estado
Procesar estado
Lismirabal
 

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

Anthony saravia documentacion-php
Anthony saravia documentacion-phpAnthony saravia documentacion-php
Anthony saravia documentacion-php
Anthony Saravia
 
Modelo vista controlador
Modelo vista controladorModelo vista controlador
Modelo vista controlador
descarga2009
 
Informe grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencaInforme grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuenca
paulcuenca9
 
Php excel
Php excelPhp excel
Php excel
pcuseth
 

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

NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
BRAYANJOSEPTSANJINEZ
 
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
Ricardo705519
 
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
evercoyla
 

Último (20)

NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
 
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAINTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
 
UNIDAD II 2.pdf ingenieria civil lima upn
UNIDAD  II 2.pdf ingenieria civil lima upnUNIDAD  II 2.pdf ingenieria civil lima upn
UNIDAD II 2.pdf ingenieria civil lima upn
 
JM HIDROGENO VERDE- OXI-HIDROGENO en calderas - julio 17 del 2023.pdf
JM HIDROGENO VERDE- OXI-HIDROGENO en calderas - julio 17 del 2023.pdfJM HIDROGENO VERDE- OXI-HIDROGENO en calderas - julio 17 del 2023.pdf
JM HIDROGENO VERDE- OXI-HIDROGENO en calderas - julio 17 del 2023.pdf
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajas
 
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
 
MANTENIBILIDAD Y CONFIABILIDAD DE LOS SISTEMAS MECANICOS
MANTENIBILIDAD Y CONFIABILIDAD DE LOS SISTEMAS MECANICOSMANTENIBILIDAD Y CONFIABILIDAD DE LOS SISTEMAS MECANICOS
MANTENIBILIDAD Y CONFIABILIDAD DE LOS SISTEMAS MECANICOS
 
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
 
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
 
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
 
Gestion de proyectos para el control y seguimiento
Gestion de proyectos para el control  y seguimientoGestion de proyectos para el control  y seguimiento
Gestion de proyectos para el control y seguimiento
 
CALCULO SISTEMA DE PUESTA A TIERRA PARA BAJA TENSION Y MEDIA TENSION
CALCULO SISTEMA DE PUESTA A TIERRA PARA BAJA TENSION Y MEDIA TENSIONCALCULO SISTEMA DE PUESTA A TIERRA PARA BAJA TENSION Y MEDIA TENSION
CALCULO SISTEMA DE PUESTA A TIERRA PARA BAJA TENSION Y MEDIA TENSION
 
Herramientas de la productividad - Revit
Herramientas de la productividad - RevitHerramientas de la productividad - Revit
Herramientas de la productividad - Revit
 
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJODIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
 
Mapas y cartas topográficas y de suelos.pptx
Mapas y cartas topográficas y de suelos.pptxMapas y cartas topográficas y de suelos.pptx
Mapas y cartas topográficas y de suelos.pptx
 
clasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias localesclasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias locales
 
Desigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdfDesigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdf
 
libro de ingeniería de petróleos y operaciones
libro de ingeniería de petróleos y operacioneslibro de ingeniería de petróleos y operaciones
libro de ingeniería de petróleos y operaciones
 
Ejemplos aplicados de flip flops para la ingenieria
Ejemplos aplicados de flip flops para la ingenieriaEjemplos aplicados de flip flops para la ingenieria
Ejemplos aplicados de flip flops para la ingenieria
 
UNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotencialesUNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotenciales
 

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))