![]() |
paginator para firebird
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? |
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. |
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 :) |
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. |
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. |
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 |
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 |
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. |
Cita:
Lo voy a hacer. |
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.
|
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. |
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. |
La franja horaria es GMT +2. Ahora son las 22:33:57. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi