Foros del Web » Programando para Internet » PHP »

MVC PHP Estructurado, ¿asi esta bien?

Estas en el tema de MVC PHP Estructurado, ¿asi esta bien? en el foro de PHP en Foros del Web. Cuando empeze a programar con PHP me aburria tener que hacer los mismo una y otra vez (claro no sabia mucho) luego con esto de ...
  #1 (permalink)  
Antiguo 07/04/2011, 07:13
Avatar de anacona16  
Fecha de Ingreso: marzo-2010
Ubicación: Bogota DC
Mensajes: 610
Antigüedad: 14 años, 1 mes
Puntos: 52
MVC PHP Estructurado, ¿asi esta bien?

Cuando empeze a programar con PHP me aburria tener que hacer los mismo una y otra vez (claro no sabia mucho) luego con esto de MVC y algo de POO me di cuenta que se puede reutilizar mucho.

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
  1. <?php
  2.     global $servidor, $bd, $usuario, $contrasenia;
  3.     $db = new PDO('mysql:host=' . $servidor . ';dbname=' . $bd, $usuario, $contrasenia);
  4.  
  5.     function buscarTodosLosItems($db)
  6.     {
  7.         $datos = array();
  8.         $sqlDefecto = "SELECT * FROM tb_productos ORDER BY codiprod DESC";
  9.         $consultaProductos = $db->query($sqlDefecto);
  10.         $cantRegistros  = $consultaProductos->rowCount();
  11.  
  12.         $pgnActual = isset($_GET['pgn'])? $_GET['pgn'] : 0;
  13.  
  14.         $pag = new Paginador();
  15.  
  16.         $datos = $pag->paginar($pgnActual, $cantRegistros);
  17.         $inicio = $pgnActual * 10;
  18.  
  19.         $consultaProductos = $db->query("SELECT * FROM tb_productos ORDER BY codiprod DESC LIMIT $inicio, 40");
  20.         return $datos[] = array("consultaProductos" => $consultaProductos->fetchAll(),
  21.                                 "cantidadRegistros" => $cantRegistros, "datos" => $datos, "pag" => $pag->getCantidadPaginas());        
  22.     }
  23.  
  24.     function insertar($db)
  25.     {
  26.         $insertar = $db->prepare("INSERT INTO tb_productos VALUES (0,:referencia,:descripcion,:cantidad,:valor,'No disponible')");
  27.         $insertar->bindParam(":referencia", strtoupper($_POST['referencia']), PDO::PARAM_STR);
  28.         $insertar->bindParam(":descripcion", strtoupper($_POST['descripcion']), PDO::PARAM_STR);
  29.         $insertar->bindParam(":cantidad", $_POST['cantidad'], PDO::PARAM_INT);
  30.         $insertar->bindParam(":valor", $_POST['valor'], PDO::PARAM_INT);
  31.         $insertar->execute();
  32.  
  33.         if($insertar->rowCount() > 0){
  34.             alert('Guardado con exito!');
  35.             redirect('productos.php');
  36.         }else{
  37.             alert('Error al guardar, intente de nuevo!');
  38.             redirect('productos.php?controlador=items&accion=agregar');
  39.         }
  40.     }
  41.  
  42.     function update($db,$codProducto)
  43.     {
  44.         $updateProducto = $db->prepare("UPDATE tb_productos SET refeprod = ?, descprod = ?, cantprod = ?, valoprod = ? WHERE codiprod = ?");
  45.         $updateProducto->bindParam(1, strtoupper($_POST['referencia']), PDO::PARAM_STR);
  46.         $updateProducto->bindParam(2, strtoupper($_POST['descripcion']), PDO::PARAM_STR);
  47.         $updateProducto->bindParam(3, $_POST['valor'], PDO::PARAM_INT);
  48.         $updateProducto->bindParam(4, $_POST['cantidad'], PDO::PARAM_INT);
  49.         $updateProducto->bindParam(5, $codProducto, PDO::PARAM_INT);
  50.         $updateProducto->execute();
  51.  
  52.         if($updateProducto->rowCount() > 0){
  53.  
  54.             alert('Registro actualizado!');
  55.             redirect('productos.php');
  56.  
  57.         }else{
  58.             alert('Error al actualizar, intente de nuevo!');
  59.             redirect('productos.php');
  60.         }
  61.     }
  62.  
  63.     function eliminar($db,$codProducto)
  64.     {
  65.         $deleteProducto = $db->exec("DELETE FROM tb_productos WHERE codiprod = $codProducto");
  66.  
  67.         if($deleteProducto > 0){
  68.            
  69.             alert('Registro eliminado!');
  70.             redirect('productos.php');
  71.  
  72.         }else{
  73.             alert('Se ha producido un error, intente de nuevo');
  74.             redirect('productos.php');
  75.         }
  76.     }

en el controlador tengo:

Código PHP:
Ver original
  1. <?php
  2.     function listar()
  3.     {
  4.         //Incluye el modelo que corresponde
  5.         require '../modelos/productosModelo.php';
  6.  
  7.         //Le pide al modelo todos los items
  8.         $productos = buscarTodosLosItems($db);
  9.  
  10.         //Pasa a la vista toda la información que se desea representar
  11.         require '../vistas/listar.php';
  12.     }
  13.  
  14.     function agregar()
  15.     {
  16.         require '../modelos/productosModelo.php';
  17.  
  18.         if($_POST){insertar($db);}
  19.  
  20.         require '../vistas/agregar.php';
  21.     }
  22.  
  23.     function guardarEditar()
  24.     {
  25.         require '../modelos/productosModelo.php';
  26.         $codProducto = $_GET['codigo'];
  27.         if (isset($codProducto) && is_numeric($codProducto) && !empty($codProducto)) {
  28.             update($db, $codProducto);
  29.         }else{
  30.             alert('mal');
  31.             redirect('../admin/productos.php');
  32.         }
  33.     }
  34.  
  35.     function borrar()
  36.     {
  37.         require 'modelos/productosModelo.php';
  38.  
  39.         $codProducto = $_GET['codigo'];
  40.         if (isset($codProducto) && is_numeric($codProducto)) {
  41.             eliminar($db,$codProducto);
  42.         }else{
  43.             alert('mal');
  44.             redirect('productos.php');
  45.         }
  46.     }

y en las vistas pues es solo HTML, el unico PHP es para listar que tengo esto:

Código PHP:
Ver original
  1. <?php foreach($productos["consultaProductos"] as $producto): ?>
  2.                 <tr align="center">
  3.                     <td><?php echo $producto['codiprod'] ?></td>
  4.                     <td><?php echo $producto['refeprod'] ?></td>
  5.                     <td align="left"><?php echo $producto['descprod'] ?></td>
  6.                     <td><?php echo $producto['cantprod'] ?></td>
  7.                     <td align="right"><?php echo '$ '. number_format($producto['valoprod']) ?></td>
  8.                     <td><img src="../img/marquilla.png" width="16" height="16" alt="Generar marquilla" /></td>
  9.                     <td>
  10. </tr>
  11. <?php endforeach; ?>

Para cargar la vista de agregar utilizo una URL como esta:

Código PHP:
Ver original
  1. productos.php?controlador=productos&accion=agregar

Para eliminar asi:

Código PHP:
Ver original
  1. 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
__________________
Aprendiendo!!!
  #2 (permalink)  
Antiguo 07/04/2011, 07:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: MVC PHP Estructurado, ¿asi esta bien?

yo lo veo bien...

y recuerda que hay cientos de formas para implementar MVC, unas mas limpias que otras, pero al final todo depende de lo que necesitamos... si por ti esta bien, ¡que mejor!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 07/04/2011, 07:29
Avatar de anacona16  
Fecha de Ingreso: marzo-2010
Ubicación: Bogota DC
Mensajes: 610
Antigüedad: 14 años, 1 mes
Puntos: 52
Respuesta: MVC PHP Estructurado, ¿asi esta bien?

Gracias, si eres tu que me dice que esta bien, entonces esta muy bien.

Supongo que hay muchas formas como lo dices, de la manera como lo estoy haciendo tal vez no se la mejor, pero esta muchisimo mejor a como lo hacia normalmente, todo en un solo archivo, PHP-Consultas-HTML, etc.
__________________
Aprendiendo!!!
  #4 (permalink)  
Antiguo 07/04/2011, 07:56
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: MVC PHP Estructurado, ¿asi esta bien?

Y porque no trabajas con clases??? en esa misma pagina donde seguiste el tutorial tienen una segunda parte donde lo implementan con clases la implementacion del MVC, es un buen comienzo pero el aprendizaje no termina en un solo tutorial, te invito a que te metas con la OOP y veas todas las ventajas que este nos da, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #5 (permalink)  
Antiguo 07/04/2011, 08:11
Avatar de anacona16  
Fecha de Ingreso: marzo-2010
Ubicación: Bogota DC
Mensajes: 610
Antigüedad: 14 años, 1 mes
Puntos: 52
Respuesta: MVC PHP Estructurado, ¿asi esta bien?

Gracias, tambien mire la segunda parte y nada he querido mas que hacer puro OOP pero la verdad todavia del todo no logro comprenderla, en mi sitio (que muy pronto publicare para que os deis una opinion) utilizo algunas clases que son de mucha ventaja y reutilizables (no las hice yo las hizo http://objetivophp.com), pero estoy aprendiendo para hacer mis propias clases.
__________________
Aprendiendo!!!

Etiquetas: mvc
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:55.