Foros del Web » Programando para Internet » PHP »

Paginación de resultados de una BD

Estas en el tema de Paginación de resultados de una BD en el foro de PHP en Foros del Web. Buenas tardes, tengo una duda con la paginación de resultados de una BD. La cosa es que siempre he usado MySQL y para la paginación ...
  #1 (permalink)  
Antiguo 10/02/2013, 09:25
 
Fecha de Ingreso: septiembre-2012
Mensajes: 6
Antigüedad: 11 años, 7 meses
Puntos: 0
Paginación de resultados de una BD

Buenas tardes,

tengo una duda con la paginación de resultados de una BD. La cosa es que siempre he usado MySQL y para la paginación he usado LIMIT, pero mi duda va más allá de todo esto.

Siempre se suele decir que cuando se hace algún SW, Web, ... siempre intentar hacer una abstracción de los detalles, en este caso me refiero a la base de datos. En el caso de una web, podemos usar MySQL, Postgresql, Oracle, MSSQL, ... y usar una librería como PDO o ADODB para trabajar con las BD.

Pero claro, la sentencias SQL se suele crear "en medio" de la web, es decir, podemos tener una clase Productos y en esa clase un método que carga los productos y es en ese método donde creamos la sentencia SQL. Aquí viene mi duda: de que nos sirve usar PDO o ADODB si luego no podemos trabajar de forma "genérica" con cualquier BD? Por mucho que usem PDO o ADODB tendremos igualmente que modificar las clases que queríamos hacer independientes de la BD, modificnado sentencias SQL para poner, en vez de LIMIT poner TOP (creo que es la alternativa a LIMIT en otros motores de BD). Si que es verdad que me ha parecido ver algo como ADODB_Pager para hacer paginación, pero esto se encargaría de añadir el LIMIT o TOP según la base de datos?

Gracias,

Edgard
  #2 (permalink)  
Antiguo 10/02/2013, 10:29
 
Fecha de Ingreso: junio-2011
Mensajes: 17
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: Paginación de resultados de una BD

Hola,

el problema que planteas, es la abstracción de la lógica de negocio respecto a la representación que usemos de los datos. Para ello, se suelen usar unas clases llamadas DAOs. Estas clases nos ayudan a abstraer cualquier consulta a la base de datos, independientemente del tipo que sea, devolviendo siempre los datos en el mismo formato hacia la lógica de negocio.

Supón que necesitas hacer operaciones en tu base de datos: insertar usuarios, borrar usuarios, ... Deberías crear una clase DaoUsuarioMySQL (por ejemplo) aplicando los métodos insertar, borrar... Entonces, en tu lógica de negocio, en el momento en qe necesitas datos de la base de datos, simplemente creas un objeto DaoUsuarioMySQL y usas el método que necesites.

En el momento en que quisieras cambiar de motor de base de datos, simplemente tendrías que crear otra clase DaoUsuarioOracle (por ejemplo) y definir exactamente los mismos métodos que tenías para la antigua de MySQL, pero con la sintaxis de Oracle. Esa es lo que se conoce como "abstracción" de la capa de datos.

En la lógica de negocio sólo tendrías que cambiar el objeto que creaste de DaoUsuarioMySQL a DaoUsuarioOracle. Si hiciste todo bien, tu aplicación debería seguir funcionando como siempre.

Finalmente, destacar que como decías, por mucho que abstraigamos nuestra aplicación de la base de datos, siempre vamos a tener que cambiar algo, dado que los sistemas gestores de bases de datos pueden ser totalmente distintos y nuestra aplicación no hace magia : D

Un saludo, espero haberte ayudado.
  #3 (permalink)  
Antiguo 10/02/2013, 11:08
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: Paginación de resultados de una BD

Puedes utilizar un Mapeador Objeto Relacional como Doctrine para realizar lo que tu quieres. Lo único que significa aprender un nuevo lenguaje de consultas llamado DQL (Doctrine Query Language) que es muy similar al SQL.

Con eso logras abstraerte completamente del motor de Base de datos y de las consultas.

Saludos
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #4 (permalink)  
Antiguo 10/02/2013, 14:36
 
Fecha de Ingreso: septiembre-2012
Mensajes: 6
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Paginación de resultados de una BD

Gracias a los dos. Tanto una opción como otra me ha quedado claro y me ha sido de ayuda! Saludos!

Edgard

Etiquetas: bd, mysql, resultados, sql
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:30.