Ho un problema con la paginazione dove spesso la paginazione mi fa vedere un'ultima pagina dove però il contenuto è vuoto.
Del tipo avrei 3 pagine piene con i risultati ma invece mi fa vedere la pagina 4, se clicco non mi fa vedere nulla, dato che sempra che il recordset sia arrivato alal fine.
Vi scrivo i codici per la sql che genero:
codice:
Set brandRS = Server.CreateObject("ADODB.Recordset")
' solo se esiste type
if ( Request.QueryString("type") <> "" AND Request.QueryString("tip") = "" AND Request.QueryString("brand") = "" ) then
brandRS.open ("SELECT DISTINCT modello, ma, tp, desc, desc_e, stato,prezzo_vendita_usa FROM articoli WHERE type=" & Request.QueryString("type") & " ORDER BY stato DESC") ,connessione
' esiste type e tip
elseif (Request.QueryString("type") <> "" AND Request.QueryString("tip") <> "" AND Request.QueryString("brand") = "") then
brandRS.open ("SELECT DISTINCT modello, ma, tp, desc, desc_e, stato,prezzo_vendita_usa FROM articoli WHERE tp=""" & Request.QueryString("tip") & """ AND type=" & Request.QueryString("type") & " ORDER BY stato DESC") ,connessione
' esiste type, tip brand e lin , quindi full
else
brandRS.open ("SELECT DISTINCT modello, ma, tp, desc, desc_e, stato,prezzo_vendita_usa FROM articoli WHERE ma=""" & Request.QueryString("brand") & """ AND tp=""" & Request.QueryString("tip") & """ AND type=" & Request.QueryString("type") & " ORDER BY stato DESC" ) ,connessione
end if
'-------------------------------------------
' PAGINAZIONE RECORDSET
'-------------------------------------------
record_x_pagina = 4
num_tot_record = 0
record_da = 0
record_a = 0
while not brandRS.eof
num_tot_record = num_tot_record + 1
brandRS.movenext
wend
if request.querystring("pagina")="" then
pagina = 1
else
pagina=cint(request.querystring("pagina"))
end if
num_tot_pagine=round(num_tot_record/record_x_pagina + 0.5)
record_da = (pagina-1)*record_x_pagina +1
record_a = record_x_pagina*pagina
'--------------------------------
' FINE PAGINAZIONE
'--------------------------------
' resetto all'inizio il RS
brandRS.movefirst
' sposto in avanti il rs start
for z=1 to record_da-1
brandRS.movenext
next
k = 1
questo è l'inclide che scrive a video la paginazione (il numero delel pagine insomma)
codice:
<div id="pagination">
<% if num_tot_pagine > 1 then
str = replace(Request.QueryString(),"pagina=" & Request("pagina") & "&","")
%>
<%if pagina > 3 and num_tot_pagine > 3 then%>
<% if pagina > 3 and num_tot_pagine > 3 then%>
First
<%end if%>
<%end if%>
<% for s = pagina-2 to pagina-1
if s > 0 then%><%=s%><%end if
next
%><span class="showed"><%=pagina%></span>
<% for s = pagina+1 to pagina+2
if s<= num_tot_pagine then%><%=s%><%end if
next
if pagina +2 < num_tot_pagine and num_tot_pagine>3 then%>Last
<% end if
if pagina +2 < num_tot_pagine then
end if
Set str = Nothing
end if %>
</div>
A video per stampare i rpodotti uso questo ciclo
codice:
while (not brandRS.eof) AND (k <= record_x_pagina) ' e lo faccio finire a fine della pagina
[....]
k= k + 1 ' incremento il contatore del record
if k MOD 2 = 1 then Response.Write("</tr><tr>") end if ' vado a capo con la tabella
brandRS.movenext
wend