Paginar resultados en HTML

Como decia gegeo, ¿es posible paginar resultados en HTML?

Un paginador nos dividirá una LISTA de R registros en n páginas de k registros, es decir al aplicar el paginador trasformamos la LISTA de la forma:

 

en realidad solo hemos hecho una simple división, guardado los valores en R, k, r, c, n, y la LISTA ya está paginada, increíble pero cierto.

Ahora vamos con el paginador, necesitamos unos controles/procesos que nos muevan por el paginador, y un puntero que nos indique en que página nos encontramos:

 

y también necesitamos un proceso que nos devuelva los registros a mostrar en la página seleccionada (CARGAR_REG_PAGINA), que básicamente debe hacer,

 

(a modo de apunte el comando de instrucción que debemos manejar en v7 que nos permitirá reproducir el proceso seria, Cortar Lista)

Ahora para manejar el paginador solo necesitamos movernos por los punteros y cargar nuestra pagina, por lo que los procesos de navegación serian:

  • Cargar la primera página P_1:

p = 1;

GARGAR_REG_PAG;

  • Cargar la última página P_ULT:

p = n;

GARGAR_REG_PAG;

  • Cargar página siguiente P_SIG:

 Si (p == n) entonces

            NADA_de_NADA

Si (p < n) entonces

p = p+1;

GARGAR_REG_PAG;

  • Cargar página anterior P_ANT:

Si (p == 1) entonces

            NADA_de_NADA

Si (p > 1) entonces

p = p-1;

GARGAR_REG_PAG;

Y ya está, con esto ya tenemos “assolutamente tutti” lo que necesitamos saber de paginadores, el resto solo es cuestión de traducirlo a un lenguaje y presentar por patalla resultados.

Ahora que controlamos ya nuesto paginador, pensemos una situación real para aplicarlo

  • Tenemos un servidor Apache con vModApache y un vServer con nuetra solución.
  • Servimos con vModApache las páginas y los datos que gestiona el vServer.
  • Tras interactuar con la web el vServer devuelve el resultado de una “busqueda o lista” que debemos presentar en HTML.
  • El número de resultados puede ser lo suficientemente elevado para que necesitemos un paginador de n-paginas con k-registros.

Partiendo de esta base solo nos queda un pequeño paso, que es añadir el montaje de la tabla en HTML en el proceso CARGAR_REG_PAGINA  justo despues de nuestra instrucción “cargar registros de la lista”, y en v7 el montaje de la tabla HTML por ejemplo podria ser,

 

La variable RETORNO nos da el código HTML de la tabla con los registros de la página seleccionada. Y por último a gusto del consumidor en los porcesos P_1, P_ULT, P_SIG, y P_ANT, que cada uno monte la página como más le guste, solo hay que referenciar en la pagina los procesos que manejan el paginador adecuadamente, por ejemplo:

 

Esta sería una las clásicas formas de actuar,  en la que creamos un paginador y unos procesos de montaje de pagina cada vez que necesitamos hacer uso de diferentes listas, con lo que nuestro software cada vez se vuelve más “Frankenstein” a medida que aumento los modulos de consulta.

¿Se puede hacer de otra forma? Yo creo que si.

Pero como hoy me voy de vacaciones, y no vuelvo hasta dentro de 2 semanas ya lo intentaré entonces 🙂

Un saludo.

Publicado el 20 abril, 2011 en Uncategorized. Añade a favoritos el enlace permanente. 6 comentarios.

  1. Vaya tela, estoy que no se por donde me da el aire.
    Luego me lo miro, ahora toca comer…

    Estaba probando a cortar lista segun una serie de variables, pero no hay por donde pillar el fallo.

    Lo pruebo y te digo algo, aunque a vuelta de tus vacaciones.

    Gracias 😉

  2. Este es el resultado.
    No es una vClase, pero funciona 😉

    Paginar en HTML con Velneo (I)

  3. Va, que no es poco.
    El siguiente capitulo, con un par de modificaciones, permitiremos al usuario seleccionar el numero de registros por pagina, facil facil.
    En breve… 😉

    • Algo parecido tego ya implementado en la vClass Paginador, pero ya la veras, por el momento ilumina tu el camino, por que yo me he centrado más en el origen de los datos y el rendimiento.

      Esperamos tu post que seguro es tan bueno como el primero.

  1. Pingback: Pepeto's blog » Blog Archive » Guia V7: ejemplos

Replica a ikonos Cancelar la respuesta