Paginer les résultats d'une requête

Soyez le premier à donner votre avis sur cette source.

Vue 15 472 fois - Téléchargée 344 fois

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

Ajouter un commentaire

Commentaires

je182th
Messages postés
13
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
20 février 2009
-
Bonjour,

J'utilise cette source pour mon projet, mais je rencontre un problème...
En fait l'affiche de la requete à lieu grace a une liste déroulante :

fichier : search.cfm

<CFQUERY name="req" datasource="data">
SELECT *
from fonction
ORDER BY libelle_fonction
</CFQUERY>

<CFFORM method="post" action="result.cfm">
<CFSELECT query="req" name="fonction.id_fonction" value="id_fonction" display="Libelle_fonction">
</CFSELECT>

</CFFORM>

fichier result.cfm

<CFQUERY name="requete" datasource="data">
SELECT Libelle_offre, offre.Libelle_Fonction, Date_prop, Nom_Region
FROM Fonction, offre
WHERE fonction.Id_fonction=offre.id_fonction
And offre.Id_fonction=#fonction.id_fonction#
</CFQUERY>


voila l'erreur rencontrée:

Element ID_FONCTION is undefined in FONCTION.

The error occurred in C:\Program Files\xampp\htdocs\result.cfm: line 6

FROM Fonction, offre
WHERE fonction.Id_fonction=offre.id_fonction
And offre.Id_fonction=#fonction.id_fonction#
</CFQUERY>
kamel_
Messages postés
1
Date d'inscription
jeudi 18 mars 2004
Statut
Membre
Dernière intervention
18 mars 2004
-
Salut

je te remercie bps pour ce code source pour la pagination, moi je rencontre un pb c est ke quand il m'affiche le resultat de ma requete : il affiche bien les [1][2][3]....mais qd je clique sur l une des page il affiche pas la suite des enregistrements et je sais pas pkoi.
je penses que c est du au url.corps, c koi exactement ca ?
Peux tu m aider merci.
cs_Skyride
Messages postés
36
Date d'inscription
jeudi 10 janvier 2002
Statut
Membre
Dernière intervention
18 décembre 2002
-
Salut Kani
Afin de tester mon exemple, j'ai pris en condidération une table PRODUIT avec comme champs PROD_ID.
Afin de pouvoir rendre fonctionnel ce code, tu dois créer une base access avec une table PRODUIT et un champs de type integer PROD_ID

Voila

Bon courage
cs_kani
Messages postés
2
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
1 juin 2002
-
Salut skyrid je suis debutant en la matiére et j'aesssaie d'utiliser le code source pour paginer une recherche mais ca bloque au niveau de #PROD_ID#. Le server m'envoie le msg d'erreur suivant: Error resolving parameter PROD_ID

"...ColdFusion was unable to determine the value of the parameter. This problem is very likely due to the fact that either:

You have misspelled the parameter name, or
You have not specified a QUERY attribute for a CFOUTPUT, CFMAIL, or CFTABLE tag.

The error occurred while processing an element with a general identifier of (#PROD_ID#), occupying document position (81:17) to (81:24)....". Je comprend la signification du message et je verifier l'ortho. du parametre qui est correctement écrit mais j'ai tjr ce messagge
merci

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.