Está en la página 1de 8

CONTROLLER

ALUMNO.CONTROLLER.PHP
<?php
require_once 'model/alumno.php';

class AlumnoController{

private $model;

public function __CONSTRUCT(){


$this->model = new Alumno();
}

public function Index(){


require_once 'view/header.php';
require_once 'view/alumno/alumno.php';
require_once 'view/footer.php';
}

public function Crud(){


$alm = new Alumno();

if(isset($_REQUEST['id'])){
$alm = $this->model->Obtener($_REQUEST['id']);
}

require_once 'view/header.php';
require_once 'view/alumno/alumno-editar.php';
require_once 'view/footer.php';
}

public function Guardar(){


$alm = new Alumno();

$alm->id = $_REQUEST['id'];
$alm->Nombre = $_REQUEST['Nombre'];
$alm->Apellido = $_REQUEST['Apellido'];
$alm->Correo = $_REQUEST['Correo'];
$alm->Sexo = $_REQUEST['Sexo'];
$alm->FechaNacimiento = $_REQUEST['FechaNacimiento'];

$alm->id > 0
? $this->model->Actualizar($alm)
: $this->model->Registrar($alm);

header('Location: index.php');
}

public function Eliminar(){


$this->model->Eliminar($_REQUEST['id']);
header('Location: index.php');
}
}
MODEL
ALUMNO.PHP
<?php
class Alumno
{
private $pdo;
public $id;
public $Nombre;
public $Apellido;
public $Sexo;
public $FechaRegistro;
public $FechaNacimiento;
public $Foto;
public $Correo;
public function __CONSTRUCT()
{
try
{
$this->pdo = Database::StartUp();
}
catch(Exception $e)
{
die($e->getMessage());
}
}
public function Listar()
{
try
{
$result = array();
$stm = $this->pdo->prepare("SELECT * FROM alumnos");
$stm->execute();
return $stm->fetchAll(PDO::FETCH_OBJ);
}
catch(Exception $e)
{
die($e->getMessage());
}
}
public function Obtener($id)
{
try
{
$stm = $this->pdo
->prepare("SELECT * FROM alumnos WHERE id = ?");
$stm->execute(array($id));
return $stm->fetch(PDO::FETCH_OBJ);
} catch (Exception $e)
{
die($e->getMessage());
}
}
public function Eliminar($id)
{
try
{
$stm = $this->pdo
->prepare("DELETE FROM alumnos WHERE id = ?");
$stm->execute(array($id));
} catch (Exception $e)
{
die($e->getMessage());
}
}
public function Actualizar($data)
{
try
{
$sql = "UPDATE alumnos SET
Nombre = ?,
Apellido = ?,
Correo = ?,
Sexo = ?,
FechaNacimiento = ?
WHERE id = ?";

$this->pdo->prepare($sql)
->execute(
array(
$data->Nombre,
$data->Correo,
$data->Apellido,
$data->Sexo,
$data->FechaNacimiento,
$data->id )
);
} catch (Exception $e)
{
die($e->getMessage());
}
}
public function Registrar(Alumno $data)
{
try
{
$sql = "INSERT INTO alumnos
(Nombre,Correo,Apellido,Sexo,FechaNacimiento,FechaRegistro)
VALUES (?, ?, ?, ?, ?, ?)";

$this->pdo->prepare($sql)
->execute(
array(
$data->Nombre,
$data->Correo,
$data->Apellido,
$data->Sexo,
$data->FechaNacimiento,
date('Y-m-d')
)
);
} catch (Exception $e)
{
die($e->getMessage());
}
}
}
DATABASE.PHP
<?php
class Database
{
public static function StartUp()
{
$pdo = new PDO('mysql:host=localhost;dbname=colegio;charset=utf8', 'root', '');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $pdo;
}
}

VIEW
ALMUNO
ALUMNO.PHP
<h1 class="page-header">Alumnos</h1>

<div class="well well-sm text-right">


<a class="btn btn-primary" href="?c=Alumno&a=Crud">Nuevo alumno</a>
</div>

<table class="table table-striped">


<thead>
<tr>
<th style="width:180px;">Nombre</th>
<th>Apellido</th>
<th>Correo</th>
<th style="width:120px;">Sexo</th>
<th style="width:120px;">Nacimiento</th>
<th style="width:60px;"></th>
<th style="width:60px;"></th>
</tr>
</thead>
<tbody>
<?php foreach($this->model->Listar() as $r): ?>
<tr>
<td><?php echo $r->Nombre; ?></td>
<td><?php echo $r->Apellido; ?></td>
<td><?php echo $r->Correo; ?></td>
<td><?php echo $r->Sexo == 1 ? 'Hombre' : 'Mujer'; ?></td>
<td><?php echo $r->FechaNacimiento; ?></td>
<td>
<a href="?c=Alumno&a=Crud&id=<?php echo $r->id; ?>">Editar</a>
</td>
<td>
<a onclick="javascript:return confirm('¿Seguro de eliminar este registro?');"
href="?c=Alumno&a=Eliminar&id=<?php echo $r->id; ?>">Eliminar</a>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
ALUMNO-EDITAR.PHP
<h1 class="page-header">
<?php echo $alm->id != null ? $alm->Nombre : 'Nuevo Registro'; ?>
</h1>
<ol class="breadcrumb">
<li><a href="?c=Alumno">Alumnos</a></li>
<li class="active"><?php echo $alm->id != null ? $alm->Nombre : 'Nuevo Registro'; ?
></li>
</ol>
<form id="frm-alumno" action="?c=Alumno&a=Guardar" method="post"
enctype="multipart/form-data">
<input type="hidden" name="id" value="<?php echo $alm->id; ?>" />
<div class="form-group">
<label>Nombre</label>
<input type="text" name="Nombre" value="<?php echo $alm->Nombre; ?>"
class="form-control" placeholder="Ingrese su nombre" data-validacion-tipo="requerido|
min:3" />
</div>

<div class="form-group">
<label>Apellido</label>
<input type="text" name="Apellido" value="<?php echo $alm->Apellido; ?>"
class="form-control" placeholder="Ingrese su apellido" data-validacion-tipo="requerido|
min:10" />
</div>

<div class="form-group">
<label>Correo</label>
<input type="text" name="Correo" value="<?php echo $alm->Correo; ?>"
class="form-control" placeholder="Ingrese su correo electrónico" data-validacion-
tipo="requerido|email" />
</div>
<div class="form-group">
<label>Sexo</label>
<select name="Sexo" class="form-control">
<option <?php echo $alm->Sexo == 1 ? 'selected' : ''; ?>
value="1">Masculino</option>
<option <?php echo $alm->Sexo == 2 ? 'selected' : ''; ?>
value="2">Femenino</option>
</select>
</div>
<div class="form-group">
<label>Fecha de nacimiento</label>
<input readonly type="text" name="FechaNacimiento" value="<?php echo $alm-
>FechaNacimiento; ?>" class="form-control datepicker" placeholder="Ingrese su fecha
de nacimiento" data-validacion-tipo="requerido" />
</div>
<hr />
<div class="text-right">
<button class="btn btn-success">Guardar</button>
</div>
</form>
<script>
$(document).ready(function(){
$("#frm-alumno").submit(function(){
return $(this).validate();
});
})
</script>
VIEW
FOOTER.PHP
<div class="row">
<div class="col-xs-12">
<hr />
<footer class="text-center well">
<p>Ejemplo desarrollado por <a
href="http://anexsoft.com">Anexsoft</a></p>
</footer>
</div>
</div>
</div>

<script src="assets/js/bootstrap.min.js"></script>
<script src="assets/js/jquery-ui/jquery-ui.min.js"></script>
<script src="assets/js/ini.js"></script>
<script src="assets/js/jquery.anexsoft-validator.js"></script>
</body>
</html>

HEADER.PHP
<!DOCTYPE html>
<html lang="es">
<head>
<title>Anexsoft</title>

<meta charset="utf-8" />

<link rel="stylesheet" href="assets/css/bootstrap.min.css" />


<link rel="stylesheet" href="assets/css/bootstrap-theme.min.css" />
<link rel="stylesheet" href="assets/js/jquery-ui/jquery-ui.min.css" />
<link rel="stylesheet" href="assets/css/style.css" />

<script src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
</head>
<body>

<div class="container">
MVC
INDEX.PHP
<?php
require_once 'model/database.php';

$controller = 'alumno';

// Todo esta lógica hara el papel de un FrontController


if(!isset($_REQUEST['c']))
{
require_once "controller/$controller.controller.php";
$controller = ucwords($controller) . 'Controller';
$controller = new $controller;
$controller->Index();
}
else
{
// Obtenemos el controlador que queremos cargar
$controller = strtolower($_REQUEST['c']);
$accion = isset($_REQUEST['a']) ? $_REQUEST['a'] : 'Index';

// Instanciamos el controlador
require_once "controller/$controller.controller.php";
$controller = ucwords($controller) . 'Controller';
$controller = new $controller;

// Llama la accion
call_user_func( array( $controller, $accion ) );
}

SCRIPT DE LA DATABASE
-- --------------------------------------------------------
-- Host: 127.0.0.1
-- Versión del servidor: 5.6.21 - MySQL Community Server (GPL)
-- SO del servidor: Win32
-- HeidiSQL Versión: 9.1.0.4903
-- --------------------------------------------------------

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT


*/;
/*!40101 SET NAMES utf8mb4 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS,
FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE,
SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;

-- Volcando estructura de base de datos para colegio


CREATE DATABASE IF NOT EXISTS `colegio` /*!40100 DEFAULT CHARACTER SET
utf8 COLLATE utf8_spanish_ci */;
USE `colegio`;

-- Volcando estructura para tabla colegio.alumnos


CREATE TABLE IF NOT EXISTS `alumnos` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`Nombre` varchar(50) NOT NULL DEFAULT '0',
`Apellido` varchar(50) NOT NULL DEFAULT '0',
`Sexo` tinyint(4) NOT NULL DEFAULT '0',
`FechaNacimiento` varchar(20) DEFAULT NULL,
`FechaRegistro` varchar(20) DEFAULT NULL,
`Correo` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- La exportación de datos fue deseleccionada.

-- Volcando estructura para tabla colegio.alumno_curso


CREATE TABLE IF NOT EXISTS `alumno_curso` (
`Curso_id` int(11) NOT NULL,
`Alumno_id` int(11) NOT NULL,
PRIMARY KEY (`Curso_id`,`Alumno_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;

-- La exportación de datos fue deseleccionada.

-- Volcando estructura para tabla colegio.cursos


CREATE TABLE IF NOT EXISTS `cursos` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`Nombre` varchar(500) COLLATE utf8_spanish_ci NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;

-- La exportación de datos fue deseleccionada.


/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS
NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;