Ver Mensaje Individual
  #3 (permalink)  
Antiguo 09/04/2011, 09:12
Avatar de anacona16
anacona16
 
Fecha de Ingreso: marzo-2010
Ubicación: Bogota DC
Mensajes: 610
Antigüedad: 14 años, 1 mes
Puntos: 52
Respuesta: PDO distintas BD pero y los LIMIT 0,40

Hola masterpuppet gracias por tu aclaracion

Cita:
Cuando se dice que es portable, se refiere a que el API, es la misma para todos los motores, por ejemplo, para ejecutar una query independientemente de si es mysql, postgres u oracle, utilizas execute, no tiene que ver con la sintaxis SQL de cada motor.
Ahora entiendo!

Cita:
Con respecto al cambio en los modelos, primero el paginador debería ser una clase y segundo si estas repitiendo el código en varios modelos, tenes un problema de diseño.
Ahora si me hiciste preocupar, para paginacion si utilizo una clase, bastante buena por cierto http://objetivophp.com/?p=101 simplemete donde la necesito pues le paso los parametros y ya.

Ahora con repecto a tu segunda observacion de problema de diseño mas me preocupo, mira este es el modelo de clientes para listarlo (Donde esta la paginacion):

Código PHP:
Ver original
  1. function listarProveedores($db)
  2. {
  3.     $consultaProveedores    = $db->query("SELECT * FROM tb_proveedores");      
  4.     $cantRegistros          = $consultaProveedores->rowCount();
  5.     $limit              = 20;
  6.    
  7.     $pag = new Paginador();
  8.    
  9.     $pgnActual          = isset($_GET['pgn'])? $_GET['pgn'] : 0;       
  10.    
  11.     $datos              = $pag->paginar($pgnActual, $cantRegistros);
  12.     $inicio                 = $pgnActual * $limit;
  13.    
  14.     $consultaProveedores    = $db->query("SELECT * FROM tb_proveedores LIMIT $inicio, $limit");
  15.    
  16.     return $datos[]         = array("consultaProveedores"   => $consultaProveedores->fetchAll(),
  17.                                     "cantRegistros"         => $cantRegistros, "datos" => $datos, "pag" => $pag->getCantidadPaginas());        
  18. }

Ahora el modelo de proveedores:

Código PHP:
Ver original
  1. function listarClientes($db)
  2. {
  3.     $consultaClientes   = $db->query("SELECT * FROM tb_clientes");     
  4.     $cantRegistros      = $consultaClientes->rowCount();
  5.     $limit              = 20;      
  6.    
  7.     $pag = new Paginador();
  8.    
  9.     $pgnActual      = isset($_GET['pgn'])? $_GET['pgn'] : 0;
  10.    
  11.     $datos          = $pag->paginar($pgnActual, $cantRegistros);
  12.     $inicio             = $pgnActual * $limit;
  13.    
  14.     $consultaClientes   = $db->query("SELECT * FROM tb_clientes LIMIT $inicio, $limit");
  15.    
  16.     return $datos[]     = array("consultaClientes" => $consultaClientes->fetchAll(),
  17.                                 "cantRegistros" => $cantRegistros, "datos" => $datos, "paginas" => $pag->getCantidadPaginas());        
  18. }

Como veras son modelos diferentes, cada uno en un script php separado y cada uno con el resto de tareas a BD.

Como son modelos diferentes pues cada uno tienes su LIMIT 0,20.

¿Esta bien asi o si estoy cometiendo el error de diseño?

Gracias.
__________________
Aprendiendo!!!

Última edición por anacona16; 09/04/2011 a las 09:33