Siguiendo este tutorial http://www.jourmoly.com.ar/introducc...primera-parte/ aprendi MVC y vaya me di cuenta que todo se vuelve mas facil, ahora, segun yo esto es MVC, pero quiero que ustedes me lo confirmen.
Esta es la estructura del sitio, en un proyecto netbeans (No es el sitio completo solo el ejemplo)
Asi como en el ejemplo utilizan un archivo index.php que dirige segun el controlador y la accion cargado yo utilizo admin/productos.php (creo debo cambiar el nombre) en modelos tengo:
Código PHP:
Ver original
<?php global $servidor, $bd, $usuario, $contrasenia; $db = new PDO('mysql:host=' . $servidor . ';dbname=' . $bd, $usuario, $contrasenia); function buscarTodosLosItems($db) { $sqlDefecto = "SELECT * FROM tb_productos ORDER BY codiprod DESC"; $consultaProductos = $db->query($sqlDefecto); $cantRegistros = $consultaProductos->rowCount(); $pag = new Paginador(); $datos = $pag->paginar($pgnActual, $cantRegistros); $inicio = $pgnActual * 10; $consultaProductos = $db->query("SELECT * FROM tb_productos ORDER BY codiprod DESC LIMIT $inicio, 40"); "cantidadRegistros" => $cantRegistros, "datos" => $datos, "pag" => $pag->getCantidadPaginas()); } function insertar($db) { $insertar = $db->prepare("INSERT INTO tb_productos VALUES (0,:referencia,:descripcion,:cantidad,:valor,'No disponible')"); $insertar->bindParam(":cantidad", $_POST['cantidad'], PDO::PARAM_INT); $insertar->bindParam(":valor", $_POST['valor'], PDO::PARAM_INT); $insertar->execute(); if($insertar->rowCount() > 0){ alert('Guardado con exito!'); redirect('productos.php'); }else{ alert('Error al guardar, intente de nuevo!'); redirect('productos.php?controlador=items&accion=agregar'); } } function update($db,$codProducto) { $updateProducto = $db->prepare("UPDATE tb_productos SET refeprod = ?, descprod = ?, cantprod = ?, valoprod = ? WHERE codiprod = ?"); $updateProducto->bindParam(3, $_POST['valor'], PDO::PARAM_INT); $updateProducto->bindParam(4, $_POST['cantidad'], PDO::PARAM_INT); $updateProducto->bindParam(5, $codProducto, PDO::PARAM_INT); $updateProducto->execute(); if($updateProducto->rowCount() > 0){ alert('Registro actualizado!'); redirect('productos.php'); }else{ alert('Error al actualizar, intente de nuevo!'); redirect('productos.php'); } } function eliminar($db,$codProducto) { if($deleteProducto > 0){ alert('Registro eliminado!'); redirect('productos.php'); }else{ alert('Se ha producido un error, intente de nuevo'); redirect('productos.php'); } }
en el controlador tengo:
Código PHP:
Ver original
<?php function listar() { //Incluye el modelo que corresponde require '../modelos/productosModelo.php'; //Le pide al modelo todos los items $productos = buscarTodosLosItems($db); //Pasa a la vista toda la información que se desea representar require '../vistas/listar.php'; } function agregar() { require '../modelos/productosModelo.php'; if($_POST){insertar($db);} require '../vistas/agregar.php'; } function guardarEditar() { require '../modelos/productosModelo.php'; $codProducto = $_GET['codigo']; update($db, $codProducto); }else{ alert('mal'); redirect('../admin/productos.php'); } } function borrar() { require 'modelos/productosModelo.php'; $codProducto = $_GET['codigo']; eliminar($db,$codProducto); }else{ alert('mal'); redirect('productos.php'); } }
y en las vistas pues es solo HTML, el unico PHP es para listar que tengo esto:
Código PHP:
Ver original
<?php foreach($productos["consultaProductos"] as $producto): ?> <tr align="center"> <td><?php echo $producto['codiprod'] ?></td> <td><?php echo $producto['refeprod'] ?></td> <td align="left"><?php echo $producto['descprod'] ?></td> <td><?php echo $producto['cantprod'] ?></td> <td><img src="../img/marquilla.png" width="16" height="16" alt="Generar marquilla" /></td> <td> </tr> <?php endforeach; ?>
Para cargar la vista de agregar utilizo una URL como esta:
Código PHP:
Ver original
productos.php?controlador=productos&accion=agregar
Para eliminar asi:
Código PHP:
Ver original
productos.php?controlador=productos&accion=borrar&codigo=<?php echo $producto[0] ?>
y bueno esto es lo mas notorio.
¿Asi esta bien?
Gracias por sus sugerencias y comentarios