Paginer les résultats d'une requête

Description

Voici un petit code source qui vous permettra de paginer en numéro de pages les résultats que vous renvoie une requête.
Vous pouvez spécifier :
- le nombre de résulats par page
- le nombre de numero de pages affichées

Source / Exemple :


<HTML>
<HEAD>
	<link rel="stylesheet" type="text/css" href="style.css">
</HEAD>

<!-- Requête de sélection des produits -->
<cfquery name="listproduit" datasource="pagination">
	SELECT * FROM PRODUIT
</cfquery>

<!-- A vous de paramétrer ces 2 variables -->
<cfset NbNumberPage = 5>	<!-- Nombre de numéros de pages affichées -->
<cfset NbEnregByPage = 10>	<!-- Nombre d'enregistrements par page -->

<cfset NbPage = (listproduit.recordcount \ NbEnregByPage)>

<cfif #evaluate(listproduit.recordcount mod NbEnregByPage)# is not 0>
	<cfset NbPage = NbPage + 1>
</cfif>

<cfset url.corps="cf_produit_liste.cfm">
	
<cfif IsDefined('url.page')>
	<cfset recherche_debut=((url.page-1)*NbEnregByPage)+1>
<cfelse>
	<cfset recherche_debut=1>
	<cfset url.page = 1>
</cfif>
<cfoutput>URL PAGE : #url.page#</cfoutput>

<BODY bgcolor=white vlink=gray alink=gray>
	<font face="Verdana, Arial, Helvetica, sans-serif">
		<cfif listproduit.recordcount GT 0>
			<center>
				<cfoutput>
					Page #url.page# / #NbPage#<br><br>
					<font color="red">#listproduit.recordcount# produits(s) trouvé(s)</font><br><br>
				</cfoutput>
						
				<cfif url.page GT NbNumberPage>
					<cfoutput>
						<a href="#CGI.PATH_INFO#?corps=#url.corps#&page=#Evaluate((((url.page\NbNumberPage)*NbNumberPage)+1) - NbNumberPage)#"><b>[<<]</b></a>
					</cfoutput>
				</cfif>
								
				<cfif url.page GT 1>
					<cfoutput>
						<a href="#CGI.PATH_INFO#?corps=#url.corps#&page=#Evaluate(url.page - 1)#"><b>[<]&nbsp;</b></a>
					</cfoutput>
				</cfif>
								
				<cfif listproduit.recordcount GT NbEnregByPage>
					<cfoutput>
						<cfloop index="curpg" from="#Evaluate(((url.page\NbNumberPage)*NbNumberPage)+1)#" to="#Evaluate((((url.page\NbNumberPage)+1)*NbNumberPage))#" step="1">
							<cfif listproduit.recordcount gt (curpg - 1) * NbEnregByPage>
								<cfif curpg is not url.page>
									<a href="#CGI.PATH_INFO#?corps=#url.corps#&page=#curpg#">#curpg#</a>
								<cfelse>
									#curpg#
								</cfif>
							</cfif>
						</cfloop>
					</cfoutput>
				</cfif>
								
				<cfif url.page * NbEnregByPage lt listproduit.recordcount>
					<cfoutput>
						<a href="#CGI.PATH_INFO#?corps=#url.corps#&page=#Evaluate(url.page + 1)#"><b>[>]</b></a>
					</cfoutput>
				</cfif>
				
				<cfif (url.page\NbNumberPage) lt (listproduit.recordcount\(NbEnregByPage*NbNumberPage))>
					<cfoutput>
						<a href="#CGI.PATH_INFO#?corps=#url.corps#&page=#Evaluate((((url.page\NbNumberPage)+1)*NbNumberPage)+1)#"><b>[>>]</b></a>
					</cfoutput>
				</cfif><br><br><br>
				
				<cfoutput query="listproduit" startrow="#recherche_debut#" maxrows="#NbEnregByPage#">
					Réference : #PROD_ID#<br>
				</cfoutput>
			</center>
		</cfif>
	</FONT> 
</BODY>
</HTML>

Conclusion :


Comme d'habitude, si vous avez des améliorations, n'hésitez pas à m'en faire part ;-)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.