OVH Cloud OVH Cloud

[CFM] affichage query sur plusieurs pages

2 réponses
Avatar
raf
Salut à tous,

Je veux afficher le résultat d'une query sur plusieurs pages, ma query me
sort 9300 enregistrements et je voudrais paginer par paquet de par exemple
50.

Actuelement, j'y arrive en comptant le nombre d'enregistrement, ensuite en
les affichants par 50 et avec deux liens pour aller 50 après et avant. Mais
je travaille avec les id de la table, hors si au millieu de ma liste j'ai un
enregistrement qui a été supprimé et qui était l'id 142 et que j'affiche les
id de 100 à 150, il ne m'en affiche que 49 au lieu de 50...

Mon but est vraiment de ne prendre que 50 résultats dans la table car si je
sort les 9300 et que je n'en n'affiche que 50, le serveur commence à
pleurer.

Est ce vous voyez une solution

Merci d'avance à tous

Raph

2 réponses

Avatar
Christian Gayton
Salut,
T'as regardé la doc du côté de startrow, maxrow, etc. ? ça devrait faire ton
affaire...
Christian
Avatar
raf
J'ai trouvé la solution, si cela intéresse quelqu'un voici une source
provenant du web et adapté a mon problème:

A+ All


<!-- 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 = 10000> <!-- Nombre de numéros de pages affichées -->
<cfset NbEnregByPage = 50> <!-- 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.pageNbNumberP
age)*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>[<] </b></a>
</cfoutput>
</cfif>

<cfif listproduit.recordcount GT NbEnregByPage>
<cfoutput>
<cfloop index="curpg"
from="#Evaluate(((url.pageNbNumberPage)*NbNumberPage)+1)#"
to="#Evaluate((((url.pageNbNumberPage)+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.pageNbNumberPage) lt
(listproduit.recordcount(NbEnregByPage*NbNumberPage))>
<cfoutput>
<a
href="#CGI.PATH_INFO#?corps=#url.corps#&page=#Evaluate((((url.pageNbNumberP
age)+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>





----- Original Message -----
From: "raf"
Newsgroups: macromedia.general.france
Sent: Wednesday, September 10, 2003 5:19 PM
Subject: [CFM] affichage query sur plusieurs pages


Salut à tous,

Je veux afficher le résultat d'une query sur plusieurs pages, ma query me
sort 9300 enregistrements et je voudrais paginer par paquet de par exemple
50.

Actuelement, j'y arrive en comptant le nombre d'enregistrement, ensuite en
les affichants par 50 et avec deux liens pour aller 50 après et avant.


Mais
je travaille avec les id de la table, hors si au millieu de ma liste j'ai


un
enregistrement qui a été supprimé et qui était l'id 142 et que j'affiche


les
id de 100 à 150, il ne m'en affiche que 49 au lieu de 50...

Mon but est vraiment de ne prendre que 50 résultats dans la table car si


je
sort les 9300 et que je n'en n'affiche que 50, le serveur commence à
pleurer.

Est ce vous voyez une solution

Merci d'avance à tous

Raph