Ver Mensaje Individual
Antiguo 18-dic-2002, 02:15   #7 (permalink)
Cain
Cain ha deshabilitado el karma
 
Avatar de Cain
 
Fecha de Ingreso: noviembre-2002
Ubicación: Catalunya
Mensajes: 6.494
Enviar un mensaje por AIM a Cain Enviar un mensaje por Yahoo  a Cain
Tema: Paginar resultados

Pregunta: ¿Cómo puedo paginar los resultados de una consulta, de modo que sólo se vean X registros en cada página?

Respuesta

Código:
<!--- Definimos las variables estáticas: Número de resultados a mostrar --->
<cfset amostrar = 30>

<!--- Calculamos los resultados que obtendremos --->
<cfquery name="registros" datasource="base">
	SELECT Count(*) as totales FROM tabla WHERE condiciones
</cfquery>

<!--- Si no hemos indicado página, es que estamos en la primera --->
<cfif not parameterexists(pagina)><cfset pagina = 1></cfif>

<!--- Generamos las variables dinámicas en función de la página --->
<cfset origen = 1+(pagina*amostrar)-amostrar>
<cfset ultima = Ceiling(registros.totales/amostrar)>

<!--- Hacemos la consulta filtrando por origen (Si usamos MySQL) --->
<cfquery name="resultados" datasource="base">
	SELECT campos FROM tabla WHERE condiciones LIMIT #origen#,#amostrar#
</cfquery>
<!--- Si usamos Access, o cualquier otra base de datos que no soporte LIMIT,
 deberemos recuperar todos los resultados y filtrarlos en el CFOUTPUT --->

<!--- Ahora pintamos los resultados (MySQL) --->
<cfoutput query="resultados">
<!--- Si no usamos MySQL y, por lo tanto, no hemos podido hacer el filtro en el CFQUERY,
usaremos <cfoutput query="resultados" startrow="#origen#" maxrows="#amostrar#"> --->
#campos#
</cfoutput>

<!--- Ahora generamos los botones Anterior y Siguiente --->
<cfif pagina gt 1><a href="pagina.cfm?pagina=#Eval(#pagina#-1)#">Anterior</a></cfif>
<cfif pagina lt ultima><a href="pagina.cfm?pagina=#Eval(#pagina#+1)#">Siguiente</a></cfif>
__________________
http://malditofriki.com/
Cain está desconectado   Responder Citando