8

Click here to load reader

Mantenimiento de Usuarios usando MVC ver1

Embed Size (px)

DESCRIPTION

Realizando paginas web para el mantenimiento de usuarios aplicando el patrón MVC. Es un inicio, algo simpre y facil de entender.

Citation preview

Page 1: Mantenimiento de Usuarios usando MVC ver1

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>

Page 2: Mantenimiento de Usuarios usando MVC ver1

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

Page 3: Mantenimiento de Usuarios usando MVC ver1

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

Page 4: Mantenimiento de Usuarios usando MVC ver1

{

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

Page 5: Mantenimiento de Usuarios usando MVC ver1

{

$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

Page 6: Mantenimiento de Usuarios usando MVC ver1

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

}

}

?>

Page 7: Mantenimiento de Usuarios usando MVC ver1

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

Page 8: Mantenimiento de Usuarios usando MVC ver1

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