dividere il risultato di una Query in più pagine

  • Creatore Discussione Creatore Discussione akainu
  • Data di inizio Data di inizio

akainu

Nuovo Utente
8 Mar 2013
1
0
0
Ciao a tutti, sto provando a creare una semplice galleria immagini in asp utilizzando un database access.
In pratica ogni qualvolta carico un immagine sul server tramite l'uso del FileSystemObject salvo sul database il percorso dell'immagine; quindi per visualizzare poi le varie immagini apro una connessione al database caricando la tabella in cui sono salvati i percorsi delle immagini e usando poi response.write stampo il codice html con il percorso delle immagini e fin qui tutto funziona. Il problema sta nel fatto che se nel database ci sono tre record con i percorsi di tre immagini differenti, la pagina di visualizzazione mi stampa il numero giusto di record (in questo caso 3) ma sempre lo stesso record, che è sempre quello con id più basso e per questo invece di visualizzare tre immagine diverse visualizza la stessa immagine per tre volte.
Questo è il codice nella pagina di visualizzazione:
<%
'Creo la connessione al database
Dim Conn
Set Conn = Server.CreateObject ("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&_
server.MapPath("img.mdb")

'Rilevo la pagina da visualizzare dalla stringa dell'URL
pag = TRIM(Request.QueryString("pag"))
If pag="" Then
pag = 1
Else
pag = CInt(pag)
End If

'Creo la stringa sql
Dim sql
sql = "SELECT * FROM immagini"
Dim rs
Set rs = Server.CreateObject ("ADODB.Recordset")

'Setto il numero di record per pagina
rs.PageSize = 5
rs.Open sql, conn, 1, 3
rs.AbsolutePage = pag

'Ora stampo le immagini su schermo
' rs("img") è la colonna dove sono salvati i percorsi delle immagini
img = rs("img")
For i=1 to rs.PageSize
Response.Write( "<a href=' " & img &" ' target='_blank'><img src=' "& img &" ' width='200' height='200'/></a>" & "<br><br>" )
rs.MoveNext
If rs.EOF Then Exit For
Next

'Preparo i link per le altre pagine della lista
If ( pag > 1) Then
Response.Write("<a href=""list.asp?pag=" &pag-1& """>Pagina precedente</a>")
End If
If ( pag < rs.PageCount ) Then
Response.Write( "<a href=""list.asp?pag=" &pag+1& """>Pagina successiva</a>")
End If
%>

Dove sbaglio?
Grazie in anticipo :)
 
Ciao,


manca roba


prova questo:


Codice:
<%
Dim strDB
strDB = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("img.mdb")
%><%
' ADO Constants - Non Modificare
Const adOpenForwardOnly = 0
Const adLockReadOnly = 1
Const adCmdText = &H0001
Const adUseClient = 3

Dim currentPage
	If Len(Request.QueryString("pag")) = 0 Then
        pag = 1
    Else
        pag = CInt(Request.QueryString("pag"))
    End If

Dim recordsToShow
	recordsToShow = 5
	

Dim con
	Set con = CreateObject("ADODB.Connection")
	con.Open strDB
	

Dim SqlVar


SqlVar = "SELECT * FROM immagini Where ID Like '%'"

Dim rs
	Set rs = CreateObject("ADODB.Recordset")
	rs.CursorLocation = adUseClient
	rs.PageSize = recordsToShow
	rs.CacheSize = recordsToShow
	rs.Open SqlVar, strDB, 3, 3
	

If Not rs.EOF Then

' se nella barra  viene scritto un numero = 0 minore di 0 rimando alla index
If pag <= 0 Then
response.redirect ("index.asp")
end if

Dim totalpages
	totalpages = rs.PageCount
	rs.AbsolutePage = pag

' se nella barra  viene scritto un numero maggiore dei record totali rimando alla index
If pag > totalpages Then
response.redirect ("index.asp")
end if
	
%> 
<%
' mostra Pagina 1 di record totali e la pagina corrente
Response.write "<font face=Arial size=2>"
Response.Write "Pagina " & pag & " di " & totalPages & "<br>"
Response.Write "Immagini: " & rs.RecordCount & "<br><br>"
response.Write " </font>"
%>
 
<%	
Dim rcount, i, x
For i = 1 To rs.PageSize
rcount = i
If pag > 1 Then
For x = 1 To (pag - 1)
rcount = rcount
Next
End If
%>
<% 
If Not rs.EOF Then 
%>
                                      
<a href="<%=rs("foto")%>" target="_blank"><img src="<%=rs("foto")%>" width="200" height="200" /></a> <br><br>                             


<% 
rs.MoveNext
End If
Next
	
' paginazione - Prossima +1 indietro -1  
If pag > 1 Then 
Response.Write "<a href=""index.asp?pag=" & pag - 1 & """>Indietro</a>"
End If
Response.Write"&nbsp;&nbsp;&nbsp;"
If CInt(pag) <> CInt(totalPages) Then
Response.Write "<a href=""index.asp?pag=" & pag + 1 & """>Prossima</a>"
End If   
End If
%><br><br>
<%
' mostra in numeri le pagine e disattiva il link su quella corrente  
For pag2 = 1 to rs.PageCount
if pag2 = pag  then
response.write "<font face=""Verdana"" size=""-2"">[ <b>" & pag & "</b> ]</font>"
else
Response.Write "<font face=""Verdana"" size=""-2"">[</font> <a href='index.asp?pag=" & pag2 & "'>"
Response.Write pag2
Response.Write "</a> <font face=""Verdana"" size=""-2"">]</font>"

end if
Next
%> 
<%    
con.Close
Set con = Nothing
Set rs = Nothing
%>


l'esempio è fatto per una pagina chiamata index.asp, cambia tutti i riferimenti.


Valeria.
 

Discussioni simili