Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Paginar php+mssql

Estas en el tema de Paginar php+mssql en el foro de SQL Server en Foros del Web. Partiendo de un tema publicado en el foro anteriormente logre paginar mis resultados partiendo de dos procedimientos almacenados ahora bien a la hora de paginar ...
  #1 (permalink)  
Antiguo 10/01/2012, 16:30
Avatar de rafaely2011  
Fecha de Ingreso: septiembre-2011
Ubicación: Sancti Spiritus
Mensajes: 10
Antigüedad: 12 años, 7 meses
Puntos: 0
Exclamación Paginar php+mssql

Partiendo de un tema publicado en el foro anteriormente logre paginar mis resultados partiendo de dos procedimientos almacenados ahora bien a la hora de paginar lo hace todo perfecto pero si por ejemplo le paso algun parametro para filtrar el contenido me deja los resultados de algunas paginas en blanco por ejemplo tengo una tabla con varios campos entre ellos uno identity autoincremetado

tabla mbasicos

idinventario int
idcnmb int
valor int
consecutivo int(es valor es autoincrementado)


los procedimientos utilizados son los siguiente en este caso dos uno para devolver la cantidad de registros totales y otro para que devuelva los resultados de la consulta paginados

Código:
CREATE PROCEDURE [dbo].[paginacion_ejemplo]
--NUMERO DE PAGINA A MOSTRAR
@index int,
--TOTAL DE REGISTROS POR PAGINA
@num_regs int,
--CNMB
@cnmb int

AS
    
    BEGIN

        --ESTOS SERNA LOS INDICES PARA LA PAGINACION
		DECLARE @maximo numeric
        DECLARE @minimo numeric

        SELECT @maximo = (@index * @num_regs)
        SELECT @minimo = @maximo - (@num_regs - 1)

        --CREACION DE LA TABLA TEMPORAL PARA LA PAGINACION
        --NUM_ORDEN SERVIRA DE INDICE PARA EXTRAER LOS REGISTROS

        CREATE TABLE #tmpListado(
            IdNroInvent varchar(10),
            IdCNMB varchar(10),
            Descripcion varchar(40),
            ValorMn money,
            consecutivo int,
        )

        --INSERTAR LOS DATOS A LA TABLA TEMPORAL DIRECTAMENTE DESDE EL SELECT
        INSERT #tmpListado SELECT  IdNroInvent, IdCNMB, Descripcion, ValorMn, consecutivo
        FROM tMBasicos
        WHERE IdCNMB = @cnmb
        ORDER BY consecutivo

        --UNA VEZ CARGADOS LOS DATOS LOS EXTRAEMOS
        --CON UN SELECT FILTRADO POR LOS VALORES DE LA PAGINACION
        SELECT  IdNroInvent, IdCNMB, Descripcion, ValorMn, consecutivo
        FROM #tmpListado
        WHERE consecutivo BETWEEN @minimo AND @maximo

    END
y este q devuelve la cantidad total de registros

Código:
CREATE PROCEDURE [dbo].[paginacion_ejemplo_registros]
--CNMB
@cnmb int
AS
    
    BEGIN
SELECT     IdNroInvent, IdCNMB, Descripcion, ValorMn, consecutivo
FROM         tMBasicos
WHERE IdCNMB = @cnmb
END
segun he revizado el problema consiste en el SP [paginacion_ejemplo] que al seleccionar de la tabla temporal tiene encuenta que el valor del campo consecutivo este dentro de los parametros @minimo y @maximo . por favor si alguien me puede dar alguna idea de como solucionar para que me muestre todos los registro por paginas . porque me los muestra por ejemplo si filtro el cnmb= 501 entonces si el consecutivo esta fuera del valor del 1 al 20 me lo muestra en la otra pagina y sin embargo tengo q muestre los primeros 20 perdonen si me explico mal pero me paerece q asi es mi problema ojala me puedan ayudar esto me tiene al borde jejej gracias de ante manos
  #2 (permalink)  
Antiguo 11/01/2012, 15:14
Avatar de rafaely2011  
Fecha de Ingreso: septiembre-2011
Ubicación: Sancti Spiritus
Mensajes: 10
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Paginar php+mssql

Solucionado el problema estaba en el SP lo que hice fue crear un campo autoincrementado en la tabla temporal #tmpListado y quedaria asi para lo que lo necesiten

[code]ALTER PROCEDURE [dbo].[paginacion_ejemplo]
--NUMERO DE PAGINA A MOSTRAR
@index int,
--TOTAL DE REGISTROS POR PAGINA
@num_regs int,
--CNMB
@cnmb int

AS

BEGIN

--ESTOS SERNA LOS INDICES PARA LA PAGINACION
DECLARE @maximo numeric
DECLARE @minimo numeric

SELECT @maximo = (@index * @num_regs)
SELECT @minimo = @maximo - (@num_regs - 1)

--CREACION DE LA TABLA TEMPORAL PARA LA PAGINACION
--NUM_ORDEN SERVIRA DE INDICE PARA EXTRAER LOS REGISTROS

CREATE TABLE #tmpListado(
idconsecutivo [int] IDENTITY(1,1) NOT NULL,
IdNroInvent varchar(10),
IdCNMB varchar(10),
Descripcion varchar(40),
ValorMn money,
)

--INSERTAR LOS DATOS A LA TABLA TEMPORAL DIRECTAMENTE DESDE EL SELECT
INSERT #tmpListado SELECT IdNroInvent, IdCNMB, Descripcion, ValorMn
FROM tMBasicos
WHERE IdCNMB=@cnmb
ORDER BY IdNroInvent

--UNA VEZ CARGADOS LOS DATOS LOS EXTRAEMOS
--CON UN SELECT FILTRADO POR LOS VALORES DE LA PAGINACION
SELECT IdNroInvent, IdCNMB, Descripcion, ValorMn
FROM #tmpListado
WHERE idconsecutivo BETWEEN @minimo AND @maximo


END
/[code]
  #3 (permalink)  
Antiguo 10/10/2012, 10:38
Avatar de Algadar  
Fecha de Ingreso: abril-2009
Mensajes: 115
Antigüedad: 15 años
Puntos: 1
Respuesta: Paginar php+mssql

Que tal rafaely2011, muy interesante tu procedimiento estoy tratando de aplicarlo con un select un poco más complejo.
Sin embargo, me gustara ver como haces el llamado en el entorno Web, si tienes algún ejemplo lo agradeceria
__________________
Deseo poco y lo poco que deseo, lo deseo poco.!
De Colores.

Etiquetas: paginar, registro, select, tabla, campos
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 11:54.