Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764

    Galleria di immagini: paginazione

    Sto lavorando ad una galleria di immagini e sono a buon punto.

    Ho un problema di paginazione.
    Attualmente vengono estratte le immagini dal db e disposte in una tabella con 2 colonne e tante righe quanti sono i record estratti.
    Finché vengono caricate poche immagini 8/10, va tutto bene. Quando, invece, le immagini sono molte di più, sarebbe meglio suddividere il tutto in più pagine.

    Vorrei fare in modo che le immagini vengano distribuite nella pagina nella tabella (esattamente come succede adesso), ma in più, se le immagini raggiungono un certo numero, devono essere distribuite in altre pagine.

    L'idea sarebbe: 2 immagini per riga, con un massimo di 20 immagini per pagina.

    Ho fatto un po' di ricerche qui nel forum, ma non sono riuscito a risolvere il mio problema. Ho trovato diverse soluzioni legate alla paginazione, ma non riesco ad "integrare" la paginazione con la mia distribuzione di record nella tabella (2 colonne) e con la presenza del form per la scelta delle gallerie (vedi codice).

    Qualche suggerimento? Grazie!


    codice:
    ' Un form per scegliere da elenco a discesa una delle gallerie. 
    <form method="post" action="">
    Scegli la galleria:
    <select onChange="goPage(this.options[this.selectedIndex].value)" class="scelta" name="galleria" id="galleria">
    <option value="#" selected="selected">-------------------</option>
    <%
    
    SqlString = "SELECT * FROM gallerie WHERE attiva =1 ORDER BY posizione ASC"
    Set RS = Conn.Execute(SqlString)
    
    Do While Not RS.EOF
    galleria=RS("galleria")
    nomegalleria=RS("nomegalleria")
    valore=RS("id")
    Response.Write("<option value=fotogallery.asp?galleria=" & galleria &">" & nomegalleria &"</option>")
    RS.MoveNext
    Loop 
    %>
    </select>
    <input name="ScegliGalleria" value="1" type="hidden">
    </form>
    <%
    ' Viene mostrata una galleria, in base alla scelta fatta 
    scelta = Request.QueryString("galleria")
    
    ' Appena caricata, la pagina fotogallery.asp, mostra una prima galleria di immagini
    ' (non è stata fatta nessuna scelta dal form).
    IF scelta <> "" Then
    Set RS1 = Server.CreateObject("ADODB.Recordset")
    RS1.ActiveConnection = Conn
    RS1.Open "SELECT galleria FROM gallerie WHERE galleria='"& scelta &"'"
    
    %>
    
    <table width="500" border="0">
    <tr>
    <% 
    
    SqlGallery = "SELECT * FROM gallery INNER JOIN gallerie ON gallery.id_galleria = gallerie.id  WHERE gallerie.galleria='"& scelta &"'"
    SET RS = Conn.Execute(SqlGallery)
    
    Cella = 1
    
    IF NOT RS.EOF THEN
    
    Do Until RS.EOF
    
    Response.Write("<td width='50%' align='center' valign='top'>")
    Response.Write("<a href=""javascript:PrevFoto('/images/gallery/")
    Response.Write RS("galleria")
    Response.Write("/")
    Response.Write RS("nome")
    Response.Write("')"">")
    Response.Write("<img src='/images/gallery/")
    Response.Write RS("galleria")
    Response.Write("/thumbs/")
    Response.Write RS("nome")
    Response.Write("' class='border' border='0' alt='")
    Response.Write RS("nome")
    Response.Write("' /></a>
    
    </td>")
    
    ' Vengono stampati i record in una tabella, con due colonne 
    If Cella = 2 THEN
    Response.Write("</tr>")
    Response.Write("<tr>")
    Cella = 1
    Else
    Cella = Cella +1
    End If
    
    RS.MoveNext
    Loop
    
    End If 
    %>
    </table>
    <%
    Else
    ' Se invece viene fatta un scelta dal form, viene mostrata la galleria scelta 
    %>
    <table width="500" border="0">
    <tr>
    <% 
    
    SqlGallery = "SELECT * FROM gallery INNER JOIN gallerie ON gallery.id_galleria = gallerie.id  WHERE gallerie.attiva =1 AND  gallerie.posizione=1"
    SET RS = Conn.Execute(SqlGallery)
    
    Cella = 1
    
    IF NOT RS.EOF THEN
    
    Do Until RS.EOF
    
    Response.Write("<td width='50%' align='center' valign='top'>")
    Response.Write("<a href=""javascript:PrevFoto('/images/gallery/")
    Response.Write RS("galleria")
    Response.Write("/")
    Response.Write RS("nome")
    Response.Write("')"">")
    Response.Write("<img src='/images/gallery/")
    Response.Write RS("galleria")
    Response.Write("/thumbs/")
    Response.Write RS("nome")
    Response.Write("' class='border' border='0' alt='")
    Response.Write RS("nome")
    Response.Write("' /></a>
    
    </td>")
    
    ' Esattamente come prima, vengono stampati i record in una tabella, con due colonne 
    If Cella = 2 THEN
    Response.Write("</tr>")
    Response.Write("<tr>")
    Cella = 1
    Else
    Cella = Cella +1
    End If
    
    RS.MoveNext
    Loop
    
    End If 
    %>
    </table>
    <% 
    
    End If
    
    %>

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764
    Credo che quest'informazione sia utile: il db è MySQL.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764
    Sto andando avanti e sembra che qualche risultato si faccia vedere, ma non so se sono sulla strada giusta.

    Adesso riesco a mostrare il numero di record che voglio, impaginati come voglio (all'interno di una tabella con due colonne).

    Se il totale di immagini è 5, io imposto (per esempio) il numero massimo di recordo per pagina in 3 e fin qui funziona.
    A questo punto devo inserire dei link che mi permettano di andare alle altre pagine per mostrare le rimamenti 2 immagini.

    E su questo punto sto penando...

    codice:
    <form method="post" action="">
    Scegli la galleria:
    <select onChange="goPage(this.options[this.selectedIndex].value)" class="scelta" name="galleria" id="galleria">
    <option value="#" selected="selected">-------------------</option>
    <%
    
    SqlString = "SELECT * FROM gallerie WHERE attiva =1 ORDER BY posizione ASC"
    Set RS = Conn.Execute(SqlString)
    
    Do While Not RS.EOF
    galleria=RS("galleria")
    nomegalleria=RS("nomegalleria")
    valore=RS("id")
    Response.Write("<option value=fotogallery2.asp?galleria=" & galleria &">" & nomegalleria &"</option>")
    RS.MoveNext
    Loop 
    %>
    </select>
    <input name="ScegliGalleria" value="1" type="hidden">
    </form>
    <%
    scelta = Request.QueryString("galleria")
    
    IF scelta <> "" Then
    Set RS1 = Server.CreateObject("ADODB.Recordset")
    RS1.ActiveConnection = Conn
    RS1.Open "SELECT galleria FROM gallerie WHERE galleria='"& scelta &"'"
    
    %>
    
    <table width="500" border="0">
    <tr>
    <% 
    
    pagina = Cint(request.querystring("pag")) 
    
    If pagina <= 0 Or Request.QueryString("pag") = "" Then 
    pagina = 1 
    End If 
    
    
    SqlGallery = "SELECT * FROM gallery INNER JOIN gallerie ON gallery.id_galleria = gallerie.id  WHERE gallerie.galleria='"& scelta &"'"
    SET RS = Conn.Execute(SqlGallery)
    
    SqlCount = "SELECT COUNT(*) AS totale FROM gallery INNER JOIN gallerie ON gallery.id_galleria = gallerie.id  WHERE gallerie.galleria='"& scelta &"'"
    
    Set RSCount = Conn.Execute(SqlCount) 
    
    PageSize = 3 
    
    inizio = (pagina-1)*PageSize 
    
    totali = Cint(RsCount("totale"))
    
    NumPagine = totali/PageSize 
    
    
    If NumPagine-Cint(NumPagine) > 0 Then 
    NumPagine = Cint(NumPagine+1) 
    Else 
    NumPagine = Cint(NumPagine) 
    End If 
    
    
    RSCount.Close 
    Set RSCount = Nothing 
    
    
    ' Eseguo la query 
    Sql = "SELECT * FROM gallery INNER JOIN gallerie ON gallery.id_galleria = gallerie.id  WHERE gallerie.galleria='"& scelta &"' LIMIT " & inizio & ", " & PageSize 
    Set Rs = Conn.Execute(Sql) 
    
    
    SqlGallery = "SELECT * FROM gallery INNER JOIN gallerie ON gallery.id_galleria = gallerie.id  WHERE gallerie.galleria='"& scelta &"' LIMIT " & inizio & ", " & PageSize 
    SET RS2 = Conn.Execute(SqlGallery)
    
    Cella = 1
    IF NOT RS2.EOF THEN
    
    Do Until RS2.EOF
    
    Response.Write("<td width='50%' align='center' valign='top'>")
    Response.Write("<a href=""javascript:PrevFoto('/images/gallery/")
    Response.Write RS2("galleria")
    Response.Write("/")
    Response.Write RS2("nome")
    Response.Write("')"">")
    Response.Write("<img src='/images/gallery/")
    Response.Write RS2("galleria")
    Response.Write("/thumbs/")
    Response.Write RS2("nome")
    Response.Write("' class='border' border='0' alt='")
    Response.Write RS2("nome")
    Response.Write("' /></a>
    
    </td>")
    
    If Cella = 2 THEN
    Response.Write("</tr>")
    Response.Write("<tr>")
    Cella = 1
    Else
    Cella = Cella +1
    End If
    
    RS2.MoveNext
    Loop
    
    End If
    
    %>
    </table>
    <%
    Else
    %>
    <table width="500" border="0">
    <tr>
    <% 
    
    pagina = Cint(request.querystring("pag")) 
    
    If pagina <= 0 Or Request.QueryString("pag") = "" Then 
    pagina = 1 
    End If 
    
    SqlGallery = "SELECT * FROM gallery INNER JOIN gallerie ON gallery.id_galleria = gallerie.id  WHERE gallerie.attiva =1 AND  gallerie.posizione=1"
    SET RS = Conn.Execute(SqlGallery)
    
    
    SqlCount = "SELECT COUNT(*) AS totale FROM gallery INNER JOIN gallerie ON gallery.id_galleria = gallerie.id  WHERE gallerie.attiva =1 AND  gallerie.posizione=1"
    Set RSCount = Conn.Execute(SqlCount) 
    
    
    PageSize = 3 
    
    inizio = (pagina-1)*PageSize
    
    totali = Cint(RsCount("totale"))
    
    
    NumPagine = totali/PageSize 
    
    
    If NumPagine-Cint(NumPagine) > 0 Then 
    NumPagine = Cint(NumPagine+1) 
    Else 
    NumPagine = Cint(NumPagine) 
    End If 
    
    
    RSCount.Close 
    Set RSCount = Nothing 
    
    
    Sql = "SELECT * FROM gallery INNER JOIN gallerie ON gallery.id_galleria = gallerie.id  WHERE gallerie.attiva =1 AND  gallerie.posizione=1 LIMIT " & inizio & ", " & PageSize 
    Set Rs = Conn.Execute(Sql) 
    
    
    SqlGallery = "SELECT * FROM gallery INNER JOIN gallerie ON gallery.id_galleria = gallerie.id  WHERE gallerie.attiva =1 AND  gallerie.posizione=1 LIMIT " & inizio & ", " & PageSize 
    SET RS2 = Conn.Execute(SqlGallery)
    
    Cella = 1
    IF NOT RS2.EOF THEN
    
    Do Until RS2.EOF
    
    Response.Write("<td width='50%' align='center' valign='top'>")
    Response.Write("<a href=""javascript:PrevFoto('/images/gallery/")
    Response.Write RS2("galleria")
    Response.Write("/")
    Response.Write RS2("nome")
    Response.Write("')"">")
    Response.Write("<img src='/images/gallery/")
    Response.Write RS2("galleria")
    Response.Write("/thumbs/")
    Response.Write RS2("nome")
    Response.Write("' class='border' border='0' alt='")
    Response.Write RS2("nome")
    Response.Write("' /></a>
    
    </td>")
    
    If Cella = 2 THEN
    Response.Write("</tr>")
    Response.Write("<tr>")
    Cella = 1
    Else
    Cella = Cella +1
    End If
    
    RS2.MoveNext
    Loop
    
    End If
    
    %>
    </table>
    <% 
    
    End If
    
    %>

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764

    RISOLTO!

    Ciao!

    codice:
    <form method="post" action="">
    Scegli la galleria:
    <select onChange="goPage(this.options[this.selectedIndex].value)" class="scelta" name="galleria" id="galleria">
    <option value="#" selected="selected">-------------------</option>
    <%
    
    SqlString = "SELECT * FROM gallerie WHERE attiva =1 ORDER BY posizione ASC"
    Set RS = Conn.Execute(SqlString)
    
    Do While Not RS.EOF
    galleria=RS("galleria")
    nomegalleria=RS("nomegalleria")
    valore=RS("id")
    Response.Write("<option value=fotogallery.asp?galleria=" & galleria &">" & nomegalleria &"</option>")
    RS.MoveNext
    Loop 
    %>
    </select>
    <input name="ScegliGalleria" value="1" type="hidden">
    </form>
    <%
    scelta = Request.QueryString("galleria")
    
    IF scelta <> "" Then
    Set RS1 = Server.CreateObject("ADODB.Recordset")
    RS1.ActiveConnection = Conn
    RS1.Open "SELECT galleria FROM gallerie WHERE galleria='"& scelta &"'"
    
    %>
    
    <table width="500" border="0">
    <tr>
    <% 
    pagina = request.querystring("pag") 
    
    If pagina <= 0 Or Request.QueryString("pag") = "" Then 
    pagina = 1 
    End If 
    
    SqlGallery = "SELECT * FROM gallery INNER JOIN gallerie ON gallery.id_galleria = gallerie.id  WHERE gallerie.galleria='"& scelta &"'"
    SET RS = Conn.Execute(SqlGallery)
    
    SqlCount = "SELECT COUNT(*) AS totale FROM gallery INNER JOIN gallerie ON gallery.id_galleria = gallerie.id  WHERE gallerie.galleria='"& scelta &"'"
    
    Set RSCount = Conn.Execute(SqlCount) 
    
    
    PageSize = 2 
    
    inizio = (pagina-1)*PageSize
    
    totali = Cint(RsCount("totale"))
    
    NumPagine = totali/PageSize
    
    gal = RS("galleria")
    
    Response.Write "<div align='center'>Pagine:" 
    For pag=1 to NumPagine 
    Response.Write "<a href='fotogallery.asp?galleria=" & gal &"&pag=" & pag & "'>" 
    Response.Write pag 
    Response.Write "</a>"
    Response.Write("")
    Next 
    Response.Write("</div>
    
    ")
    
    
    If NumPagine-Cint(NumPagine) > 0 Then 
    NumPagine = Cint(NumPagine+1) 
    Else 
    NumPagine = Cint(NumPagine) 
    End If 
    
    RSCount.Close 
    Set RSCount = Nothing 
    
    Sql = "SELECT * FROM gallery INNER JOIN gallerie ON gallery.id_galleria = gallerie.id  WHERE gallerie.galleria='"& scelta &"' LIMIT " & inizio & ", " & PageSize 
    Set Rs = Conn.Execute(Sql) 
    
    
    SqlGallery = "SELECT * FROM gallery INNER JOIN gallerie ON gallery.id_galleria = gallerie.id  WHERE gallerie.galleria='"& scelta &"' LIMIT " & inizio & ", " & PageSize 
    SET RS2 = Conn.Execute(SqlGallery)
    
    Cella = 1
    IF NOT RS2.EOF THEN
    
    Do Until RS2.EOF
    
    Response.Write("<td width='50%' align='center' valign='top'>")
    Response.Write("<a href=""javascript:PrevFoto('/images/gallery/")
    Response.Write RS2("galleria")
    Response.Write("/")
    Response.Write RS2("nome")
    Response.Write("')"">")
    Response.Write("<img src='/images/gallery/")
    Response.Write RS2("galleria")
    Response.Write("/thumbs/")
    Response.Write RS2("nome")
    Response.Write("' class='border' border='0' alt='")
    Response.Write RS2("nome")
    Response.Write("' /></a>
    
    </td>")
    
    If Cella = 2 THEN
    Response.Write("</tr>")
    Response.Write("<tr>")
    Cella = 1
    Else
    Cella = Cella +1
    End If
    
    RS2.MoveNext
    Loop
    
    End If
    
    
    %>
    </table>
    <%
    gal = RS("galleria")
    
    Response.Write "<div align='center'>Pagine:" 
    For pag=1 to NumPagine 
    Response.Write "<a href='fotogallery.asp?galleria=" & gal &"&pag=" & pag & "'>" 
    Response.Write pag 
    Response.Write "</a>"
    Response.Write("")
    Next 
    Response.Write("</div>
    
    ")
    
    Else
    %>
    <table width="500" border="0">
    <tr>
    <% 
    pagina = Cint(request.querystring("pag")) 
    
    If pagina <= 0 Or Request.QueryString("pag") = "" Then 
    pagina = 1 
    End If 
    
    SqlGallery = "SELECT * FROM gallery INNER JOIN gallerie ON gallery.id_galleria = gallerie.id  WHERE gallerie.attiva =1 AND  gallerie.posizione=1"
    SET RS = Conn.Execute(SqlGallery)
    
    
    SqlCount = "SELECT COUNT(*) AS totale FROM gallery INNER JOIN gallerie ON gallery.id_galleria = gallerie.id  WHERE gallerie.attiva =1 AND  gallerie.posizione=1"
    Set RSCount = Conn.Execute(SqlCount) 
    
    
    PageSize = 2 
    
    inizio = (pagina-1)*PageSize
    
    totali = Cint(RsCount("totale"))
    
    NumPagine = totali/PageSize
    
    gal = RS("galleria")
    
    Response.Write "<div align='center'>Pagine:" 
    For pag=1 to NumPagine 
    Response.Write "<a href='fotogallery.asp?galleria=" & gal &"&pag=" & pag & "'>" 
    Response.Write pag 
    Response.Write "</a>"
    Response.Write("")
    Next 
    Response.Write("</div>
    
    ")
    
    
    If NumPagine-Cint(NumPagine) > 0 Then 
    NumPagine = Cint(NumPagine+1) 
    Else 
    NumPagine = Cint(NumPagine) 
    End If
    
    RSCount.Close 
    Set RSCount = Nothing
    
    
    Sql = "SELECT * FROM gallery INNER JOIN gallerie ON gallery.id_galleria = gallerie.id  WHERE gallerie.attiva =1 AND  gallerie.posizione=1 LIMIT " & inizio & ", " & PageSize 
    Set Rs = Conn.Execute(Sql) 
    
    SqlGallery = "SELECT * FROM gallery INNER JOIN gallerie ON gallery.id_galleria = gallerie.id  WHERE gallerie.attiva =1 AND  gallerie.posizione=1 LIMIT " & inizio & ", " & PageSize 
    SET RS2 = Conn.Execute(SqlGallery)
    
    Cella = 1
    IF NOT RS2.EOF THEN
    
    Do Until RS2.EOF
    
    
    Response.Write("<td width='50%' align='center' valign='top'>")
    Response.Write("<a href=""javascript:PrevFoto('/images/gallery/")
    Response.Write RS2("galleria")
    Response.Write("/")
    Response.Write RS2("nome")
    Response.Write("')"">")
    Response.Write("<img src='/images/gallery/")
    Response.Write RS2("galleria")
    Response.Write("/thumbs/")
    Response.Write RS2("nome")
    Response.Write("' class='border' border='0' alt='")
    Response.Write RS2("nome")
    Response.Write("' /></a>
    
    </td>")
    
    If Cella = 2 THEN
    Response.Write("</tr>")
    Response.Write("<tr>")
    Cella = 1
    Else
    Cella = Cella +1
    End If
    
    RS2.MoveNext
    Loop
    
    End If
    
    %>
    </table>
    <%
    gal = RS("galleria")
    
    Response.Write "<div align='center'>Pagine:" 
    For pag=1 to NumPagine 
    Response.Write "<a href='fotogallery.asp?galleria=" & gal &"&pag=" & pag & "'>" 
    Response.Write pag 
    Response.Write "</a>"
    Response.Write("")
    Next 
    Response.Write("</div>
    
    ")
    
    
    End If
    
    %>

  5. #5

    Piccola richiesta

    Posso sapere com'è la struttura del data-base ?

    Nome tabelle =

    Tabella nome campi=

    Sto cercando di capire asp come funziona e come interagisce con i data base

    Grazie.

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764
    Il db è composto da due tabelle: la prima contiene le "cagegorie", la seconda le immagini.

    La tabella delle categorie ha 5 campi:
    - id
    - nome cartella (è il campo che contiene il nome della cartella scritta sul server)
    - nome categoria (è il nome della galleria, quella che apparirà nel sito)
    - attiva (per attivare o disattivare la categoria)
    - posizione (per gestire la posizione relativa di una categoria rispetto alle altre).

    La tabella delle immagini ha 7 campi:
    - id
    - id_categoria (legge l'id della tabella categorie)
    - didascalia (eventuale didascalia dell'immagine)
    - nome (il nome del file)
    - data
    - posizione
    - attiva.


    Funzionalità della galleria:
    1. Possibilità di creare delle categorie all'interno delle quali caricare le proprie immagini.
    2. Immagini caricabili tramite file zip (che viene poi decompresso sul server e vengono create le miniatura, grazie ad uno script in ASP.NET).
    3. Gestione delle categorie: modifica immagine, eliminazione, attivazione/disattivazione, posizione.
    4. Gestione delle immagini: modifica, eliminazione, attivazione/disattivazione, posizione.

    Nel sito, all'apertura della pagina gallery.asp, per mia scelta, vengono mostrate le immagini di una certa categoria. Per passare alle immagini delle altre categorie, è possibile operare una scelta da un elenco a discesa (che viene popolato leggendo i nomi delle categorie nel db).

    Spero che queste poche informazioni possano esserti utili.

  7. #7

    Re-Roby140569

    Dopo il 15 febbraio avrò del tempo libero per provare questo tuo script.
    Mi salvo questo post tra i preferiti.
    Piccola richiesta di collaborazione, quando lo proverò posso chiederti un'aiuto visto che lo hai progettato o quanto meno perfezionato non so ora, attraverso questo stesso post?

    Ciao e grazie della risposta.

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764
    OK!

  9. #9

    Re-Roby140569

    Grazie mille

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.