Salve a tutti.
Premetto che non sono espertissimo di linguaggi di programmazione.....
Ho un problema sulla pagina news del sito dell'agenzia per cui lavoro. Esiste un elenco completo di tutte le news inserite durante il periodo di un anno, e come potete immaginare dopo qualche mese la pagina diventa un po lunghetta da visualizzare e pertanto volevo paginare i dati. Vagando per il web sono alla fine riuscito ad applicare questa soluzione:
<%
dim currentPage, pageSize, recordCount, pageCount
' imposta il numero di record da visualizzare in ogni pagina
pageSize = 5
' "legge" la pagina corrente dalla querystring
if(len(Request.QueryString("page"))=0)then
currentPage = 1
else
currentPage = CInt(Request.QueryString("page"))
end if
dim cn, rs, sql
set cn = Server.CreateObject("ADODB.Connection")
cn.Open "Driver={SQL Server};Server=xx.xxx.xxx.xx;Database=MSSqlxxxxx;U id=MSSqlxxxxx;Pwd=xxxxxxxx;"
' conteggia il numero di record totali della query e il numero di pagine (per la visualizzazione dei link delle altre pagine)
SQL = "SELECT COUNT(*) AS CNT FROM TBL_News"
set rs = cn.execute(sql)
recordCount = rs("CNT")
' ottieni il numero delle pagine totali
pageCount = int(CInt(recordCount) / pageSize)
rs.Close()
' seleziona i record da visualizzare nella pagina corrente
SQL = "SELECT TOP " & (currentPage - 1) * pageSize & pageSize &" * FROM TBL_News WHERE abilitata='1' ORDER BY data DESC"
set rs = cn.execute(sql)
%>
Il discorso sta nel fatto che per farlo semi-funzionare ho dovuto modificare la query, in quanto il tutorial che io ho seguito prevedeva in origine questa query:
SELECT * FROM TBL_News WHERE abilitata='1' ORDER BY data DESC" &_ " LIMIT " & (currentPage - 1) * pageSize & ", " & pageSize
Solo che il mio db è MsSql, e non supporta la clausola LIMIT che io ho sostituito con la clausola TOP. Inoltre i valori pageSize della query originale sono divisi da una virgola, mentre se provo a dividerli in maniera uguale nella query modificata da me mi da errore.
Nella pagina dell'elenco io visualizzo correttamente il numero delle pagine (al momento mi da da 1 a 9 e visualizzando 5 record a pagina è giusto), e nella prima pagina vedo solo le ultime 5 news (ed anche questo è giusto); solo che quando mi sposto nelle altre pagine la paginazione smette di funzionare e vedo l'elenco completo.
Qualcuno sa indicarmi dove sta l'errore e come si potrebbe risolvere????
Grazie a tutti....

Rispondi quotando