PDA

Ver la Versión Completa : paginator para firebird


micayael
06-12-2005, 21:39:23
Hola gente.

Existe el famoso paginator para el mySQL que sirve para paginar las paginas cuando se tiene un SELECT con demasiados registros para mostrar por pagina.

Hay alguien que sepa si existe algo parecido para FIREBIRD en PHP ya creado?

kayetano
07-12-2005, 11:43:07
Hola

No se si existe, pero te aseguro que modificar el "paginator" para firebird no es nada complicado. Animate y haz algo por la comunidad libre.

micayael
07-12-2005, 14:21:44
lo estuve probando pero uso php 4. y el paginator usa la funcion num_rows del mysql y la misma funcion para ibase solo está disponible desde php 5.

No puedo cambiar mi php al 5 porque la mayoria de los servidores donde trabajo tienen el 4 y a veces no es compatible.

Pero si dices que es facil me cuentas como solucionar este problema y sigo probando jeje. Asi aportas algo para la comunidad libre :)

kayetano
07-12-2005, 16:18:48
Hola

La funcion mysql_num_rows() se puede sustituir por la sentencia SQL "SELECT COUNT()", otra alternativa sería contar "manualmente" con un simple bucle y un contador.

micayael
09-12-2005, 13:42:43
Hay en FIREBIRD alguna funcion que devuelva la cantidad de filas afectadas en el ultimo proceso?

Por ejemplo en SQL Server esta @@ROWCOUNT que hace eso.

micayael
15-12-2005, 21:55:47
Hola Caye.

Hice el tema del paginator y salio bien creo yo.

Quiero subirlo aqui para que lo vean, prueben y si saben como mejorarlo me avisan para que podamos aprender todos y sacar algo bueno del tema.

Les digo lo que agregue.

Yo por ejemplo tengo un STORE PROCEDURE para una busqueda o listar filas de una tabla y otro que me arroje la cantidad total de filas (yo lo hago asi porque no uso php 5 y php 4 no tienen ibase_num_rows())

Entonces:
//-- SP que lista las filas = la consulta en si
$_pagi_sql = "SELECT * FROM SP_CATLIB_LISTAR";

//-- SP que extrae el total de filas de la misma consulta de arriba
$_pagi_sql_numrows = "SELECT NUMROWS FROM SP_NUMROWS_CATLIB";

//-- Esto lo hago porque el LIMIT del mySQL esta al final de la sentencia
//-- mientras FIREBIRD no tiene limit sino FIRST cantidad SKIP desde
$_pagi_from = "FROM SP_CATLIB_LISTAR";

//-- esto es lo que devuelve el ibase_connect();
$_pagi_link_identifier = $BdD;

//-- llamo al paginator arreglado
require("../../_php/paginator.inc.php");


Despues es todo normal. a demas de las variables que devuelve devuelve * $_pagi_filas_en_pagina :Cantidad de filas en la pagina actual
$_pagi_cantidad_pagina : Cantidad de paginas


El archivo php del paginator está en http://www.granodemostaza.org/tmp/paginator.inc.rar

Copio los SP a continuacion

micayael
15-12-2005, 21:59:15
este es le primer SP que lista lo que hay en una tabla CATEGORIA_LIBROS_T

CREATE PROCEDURE SP_CATLIB_LISTAR
RETURNS (
CATLIB_ID INTEGER,
CATLIB_COD VARCHAR(10),
CATLIB_DESCRIPCION VARCHAR(50))
AS
BEGIN
FOR SELECT CATLIB_ID, CATLIB_COD, CATLIB_DESCRIPCION
FROM CATEGORIA_LIBROS_T
INTO :CATLIB_ID,:CATLIB_COD, :CATLIB_DESCRIPCION DO
BEGIN
SUSPEND;
END
END


::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Este es el segundo que devuelve la cantidad de filas de esa misma consulta

CREATE PROCEDURE SP_NUMROWS_CATLIB
RETURNS (
NUMROWS INTEGER)
AS
BEGIN
SELECT COUNT(CATLIB_ID)
FROM CATEGORIA_LIBROS_T
INTO :NUMROWS;
SUSPEND;
END



Si les interesa puedo poner un ejemplo sobre el tema. Si encuentran como mejorarlo les agradeceria que me lo cuenten..

Un abrazo a todos

kayetano
16-12-2005, 12:04:21
Hola

TE LO HAS CURRADO!!!, voy a preguntar donde podemos poner el archivo dentro de club delphi.

Estaría bien que te pusieras en contacto con el creador de PAGINATOR y le hicieras saber que has realizados modificaciones para que funcione con firebird.

micayael
16-12-2005, 12:57:00
Hola

No se si existe, pero te aseguro que modificar el "paginator" para firebird no es nada complicado. Animate y haz algo por la comunidad libre.
Segui tu consejo nada más ;-)

Lo voy a hacer.

Emilio
16-12-2005, 18:42:01
Pues muy bien eso de currarse las cosas, y mejor si además las compartes, Kayetano, si me pasas el fichero a la dirección que tu sabes lo colgamos.

kayetano
17-12-2005, 13:21:09
Hola micayael

Puedes añadir un txt con los SP necesarios y con las modificaciones que has realizado ??

Crea este archivo txt añadelo al paquete rar, me dices de donde bajarloi y lo colgamos en la web de clubdelphi.

micayael
19-12-2005, 12:15:18
Hola gente.

Actualize el archivo .rar en la misma direccion de arriba.

Esta el paginator modificado, el txt con el DDL de la tabla y los dos SP's y una pagina de ejemplo.

Un abrazo a todos.