Un difficile problème

Nouveau WRInaute
Hello all ,

Pour séparer pages, j'ai écrit un fragment du code comme ci-dessous :

<%
...........

set rs=Server.CreateObject("ADODB.Recordset")
rs.CursorLocation=3
rs.PageSize=30

cPage=Request.QueryString("iPage")
if cPage="" OR Not IsNumeric(cPage) then cPage=1 End if
rs.Open sql, conn, 0,3
totalRecords=rs.RecordCount
if totalRecords>0 then
rs.AbsolutePage=cPage
No=1
Do Until No>rs.PageSize OR rs.EOF
%>


L'exposition des teneurs selon conditions ici

<%
if totalRecords/7 >1 then

queryString="Visitors.asp?ClassID="&session.sessionID&"&ViewType="&session("ViewType")

Dim sNo, eNo, Segment, StrLink

totalPages=totalRecords\7
if totalRecords mod 7 > 0 then totalPages=totalPages+1 end if

Segment=cPage\7
if cPage mod 7 > 0 then Segment=Segment+1 end if

sNo=Segment*7-6

eNo=Segment*7

if Segment*7>totalPages then eNo=totalPages end if

strLink=""

if Segment>1 then
strLink=strLink&"<a href='"&queryString &"&iPage="&(Segment-1)*7&"' onclick='doLoad()'> Previous</a>&nbsp;"
end if

For No=sNo to eNo
if No=cInt(cPage) then
strLink=strLink&"&nbsp;"& No & "&nbsp;"
else
strLink=strLink&"&nbsp;<a href='"&queryString&"&iPage="&No&"' onclick='doLoad()'><u>"&No&"</u></a>&nbsp;"
end if
Next

if totalPages>Segment*7 then
strLink=strLink&"&nbsp;<a href='"&queryString&"&iPage="&(Segment*7)+1&"' onclick='doLoad()'>Next</a>"
end if
Response.Write(strLink)
end if
%>


Les résultats semblent être très excellents :

mh25in.jpg


Et au bas de la page :


mh34hz.jpg


Pauvre! Le problème se trouve dans les liens de pages . Il y a plus de 7 pages de resultats, mais il n'y a que 6 pages qui contient de la donnée !
Voilà , c'est le 7 è page :

mh44rh.jpg


Les pages par la suite qui sont même état !

Savez - vous où est mon erreur ? Indiquez-moi , s'il vous plait .
Je vous remercie par avance .
 
WRInaute occasionnel
J'ai regardé brièvement ton code, sans trop m'y attarder. Ton erreur vient sans doute soit d'un mauvais calcul du eNo, soit de ta boucle FOR qui se fait une fois de trop (For No=sNo to eNo) : selon la méthode dont ton eNo est calculé, tu devras peut-être utiliser un "For No=sNo to eNo-1"

Fred
 
Nouveau WRInaute
iconso, merci bien ;

Je suis sur que sNo ( startNumero) et eNo (endNumero) - je préfère nommer des variables suivant cet habitude - qui n'ont pas de problème

C'est ce code qui a été utilisé sur quelques autres pages et a donné bons resultats .

Mais dans ce page , je voudrais que chaque page contient 30 fields : rs.PageSize=30

Alors, voilà mon erreur :

totalPages=totalRecords\
7
if totalRecords mod 7 > 0 then totalPages=totalPages+1


Je l'ai changé en :


totalPages=totalRecords\30
if totalRecords mod 30 > 0 then totalPages=totalPages+1



Maintenant, l'affaire est réglée ! Mais quoi qu'il en soit, plus d'un fois, je te remercie de ton enthousiasme.


----------------
 
Discussions similaires
Haut