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
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