Archivo de la categoría: vModApache

Paginar en HTML con Velneo (II)

Hace unos dias veiamos en Paginar en HTML con Velneo (I) una forma básica de paginar unos resultados obtenidos en una búsqueda o listado HTML.

Esta vez, vamos a añadir una funcionalidad a nuestro paginador, la cual es ofrecer al usuario la posibilidad de seleccionar en ejecución el número de registros a mostrar por página, similar, por ejemplo, a la típica tienda online que nos permite mostrar X artículos por página.

Es tarea fácil, ya que únicamente debemos modificar una variable, el lugar de esta dentro del proceso, y por último, incluir un combobox en nuestro HTML para que el usuario seleccione el que sea de su agrado.

Por lo tanto, partiendo como base del proceso del artículo anterior, debemos modificar nuestra variable (K), que pasará a ser alfabética, ya que la enviaremos con el método GET en nuestras URLs desde las opciones que ofrezcamos en el combobox.

A partir de aqui, deberemos convertir su valor en numérico con la función stringToNumber(K), en aquellas operaciones aritméticas en las que participa esta variable en nuestro proceso.

Por ultimo, crearemos un combobox para mostrar las opciones disponibles al usuario. En estas opciones, siempre enviaremos al usuario a la primera página de los resultados, visualizando el numero de registros (K) que haya seleccionado.
Veamos el proceso:

En el codigo HTML de nuestro combobox, las URLs quedaran de la siguiente manera:

Y este es el resultado:

Con estos dos articulos, ya hemos visto cómo paginar de una forma básica los resultados de una consulta en HTML, y como dar la posibilidad al usuario web, para seleccionar el número de registros a mostrar en la web.

Cualquier tipo de sugerencia, opinion y/o critica, son bienvenidas. 🙂

Paginar en HTML con Velneo (I)

Gracias a la ayuda de Ikonos y Pepeto, obtuve la idea sobre la que trabajar, y aqui teneis una solucion provisional al paginado en html con vModApache, y digo provisional, porque a partir de aquí, se puede mejorar el proceso y las posibles variantes que se nos ocurran.

Este proceso únicamente muestra el resultado paginado de una lista de registros.

La clave estaba en conocer varios datos referentes a la lista, que los vamos a tratar a través de variables locales:

PAG: pagina en la que nos encontramos. Esta variable, aunque contiene un dato numérico, DEBE SER DE TIPO ALFABETICO, ya que en los procesos accesibles via web, las variables locales SIEMPRE son de tipo alfabético.
R: numero de registros totales que tiene nuestra lista.
K: numero de registros que queremos mostrar por pagina.
C: numero de paginas que contienen el numero de registros que queremos mostrar (K)
N: numero de paginas en total que tendrá nuestro resultado, en función del numero de registros que hemos obtenido.
P: numero de registros en la ultima pagina, ya que esta puede contener desde 1 hasta el numero de registros que hayamos indicado en la variable (K)
Por defecto, en las búsquedas, al mostrar el resultado, lo mostraremos en la primera pagina, por lo que en la URL resultante de la búsqueda, ya deberemos indicar la variable PAG=1, y esto nos lleva al comienzo del proceso para realizar la búsqueda y paginar su resultado.

Vamos con el proceso:

Establecemos la pagina en la que estamos.
Añadimos contenido a la variable RETORNO (es la que contiene el código html que mostraremos a final de proceso)
Cargamos lista o Busqueda, por los índices que nos interesan desde un formulario html.
Una vez cargada, establecemos los valores de las diferentes variables que hemos visto al principio.
R: establecemos el numero de registros que han resultado de la búsqueda o lista
K: establecemos el numero de registros a mostrar por pagina. (este valor, lo podemos traer desde la ficha de usuario, desde la configuración de la web, … desde donde nos interese. Para este ejemplo, le damos el valor directamente en el proceso)
C: establecemos el numero de paginas completas con (K) registros, para lo que nos interesa el numero entero, del resultado de dividir el numero total de registros (R) entre los registros por pagina (K)
N: aquí vamos a establecer como valor el numero de paginas totales que tendrá nuestro paginador, por lo que deberemos elegir entre dos resultados:

  • si el resultado de, restar al numero de registros (R) el numero de registros (K) por el numero de paginas completas (C) fuese cero, es decir, si (R-(K*C))=0, estableceremos (C) como valor de (N)
  • si el resultado fuese distinto de cero, estableceremos (C)+1 como valor de (N). Esto quiere decir que habrá (C) paginas con (K) registros, y una ultima pagina con alguna registro más, a los que llamaremos (P).

P: para establecer el valor a esta variable, restamos al numero de registros (R) el numero de registros (K) por el numero de paginas completas (C)
Aqui ya conocemos los valores de todas las variables, por lo que continuamos el proceso con:
Cortar lista, y aquí cortamos la lista por el numero de registros que hemos decidido mostrar por pagina, en nuestro caso (K), y seguido, como fórmula de posición, posición a partir de la cual queremos cortar la lista.
Llegados a este punto, solo nos queda recorrer la lista para mostrar el resultado del proceso, con un navegador para las paginas, para lo que deberemos determinar si nos encontramos en la primera, en la ultima pagina, o en cualquiera diferente de estas dos, estableciendo en la variable RETORNO el codigo html resultante, y dando por finalizado el proceso, estableciendo el dato de retorno del mismo, con la instrucción Set dato de retorno del proceso (RETORNO).

ATENCION: para operar con la pagina actual, la variable PAG, recordad que por necesidad de los procesos accesibles via web, esta es de tipo alfabético, por lo que debereis convertirla en numero para operaciones aritméticas con ella. stringToNumber(PAG)

Cualquier tipo de sugerencia, opinion y/o critica, son bienvenidas. 😉