Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Loop per gallery

  1. #1
    Utente di HTML.it L'avatar di TeoB
    Registrato dal
    Dec 2004
    Messaggi
    592

    Loop per gallery

    Visto che ormai ho terminato la parte riguardo l'upload delle fotografie stavo iniziando a pensare su come costruire la pagina contenente le gallerie.

    La prima idea è stata quella di creare uno script che mi pesca tutte le info del db e mi costruisce una tabella formando i collegamenti alle immagini.

    Io ho fatto cosí, sapendo cmq che avrei sbagliato:

    codice:
    <html>
    <head>
    <title>Tabella dati DB</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </meta>
    </head>
    <body>
    <%
    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " &_
             "Data Source="& Server.MapPath("/mdb-database/db.mdb") &"; " &_
             "Jet OLEDB:Database Password=" & "xxx" & ";"
    Set objRs = Server.CreateObject("ADODB.Recordset")
    set objRs = objConn.Execute("SELECT * from tabella ")
    Do while NOT objRs.EOF
    %>
    <center>
    <table border="1">
      <tr>
        <td>">" width="120" height="70" border="0" /></td>
    <%
    objrs.movenext
    loop
    objRs.Close
    Set objRs = Nothing
    objConn.Close
    Set objConn = Nothing
    %>
    </tr>
    </table>
    </center>
    </body>
    </html>
    Ecco il file: http://www.matteobinda.com/gallery.asp

    Come prevedevo, mi mette le immagini incolonnate, ma se le volessi in riga? Oppure ancora meglio se ne volessi solo 3 in riga e poi andare a capo?

    Ho provato a risolvere facendo dei loop incastrati tra i tag della tabella, ma riesco solamente a mettere le foto su un'unica riga. Quando ho 6 foto e voglio metterne 3 per riga non riesco a dire allo script che dopo 3 foto deve andare a capo e formare un'altra nuova riga. Penso che dovrei usare un secondo loop per il tag TR, ma come?

    Grazie anticipate!

  2. #2
    Prova così:

    codice:
    <%@ LANGUAGE = "VBScript"%>
    
    <%
    ' IMPOSTO IL NUMERO DELLE COLONNE CHE POSSO VARIARE A PIACERE
    Dim num
    num="3"
    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& Server.MapPath("db.mdb")
    Set objRs = Server.CreateObject("ADODB.Recordset")
    set objRs = objConn.Execute("SELECT * from tabella ")
    
    Response.Write "<html><body>"            
          
    ' SE CI SONO RECORD NEL DATABASE
              If Not objrs.EOF Then
    
             
    ' APRO LA TABELLA E IMPOSTO LA LARGHEZZA A 120 che è la larghezza della miniatura
    ' quindi la moltiplico per il numero delle colonne per ottenere la larghezza giusta
    ' in questo modo aumentando o diminuendo il num delle colonne la tabella si adatterà
    ' al nuovo numero di celle.
    
                Response.Write"<table border=1 width=120*num align=center>"
                numeroColonne = 0
                
    ' CONTO I RS FINO ALLA FINE
                 Do Until objrs.EOF
    
             
    
                If numeroColonne Mod num = 0 Then
    				
    				If numeroColonne <> 0 Then Response.Write"</tr>"
    				
    	%>			
    
        <td>">" width="100" height="70" border="0" /></td>
    
    <%
    
    
    				Else
    				%>
    				
        <td>">" width="100" height="70" border="0" /></td>
    <%				End If
    				
    ' PASSO ALLA COLONNA SUCCESSIVA
    				numeroColonne = numeroColonne + 1
                   
    ' RS SUCCESSIVO
                 objrs.MoveNext
    
                Loop
                
    ' CHIUDO LA TABELLA
                Response.Write"</tr></table>"
                
    ' CHIUDO IL RS
                objrs.Close
                Set objrs = Nothing
                
             
             Else 
    
     'SE NON CI SONO RECORD SCRIVE UN MESSAGGIO
                Response.Write"IL DATABASE NON CONTIENE RECORD!"
             
             End If
    
          Response.Write "</body></html>"
       
     'CHIUDO LA CONNESSIONE AL DATABASE
          objconn.Close
       Set objconn = Nothing
    
    %>
    Vedi se ti va bene

  3. #3
    Utente di HTML.it L'avatar di TeoB
    Registrato dal
    Dec 2004
    Messaggi
    592
    Ciao, grazie per lo script ma non capisco una cosa, questi due if:

    codice:
     I If numeroColonne Mod num = 0 Then
    				
    				If numeroColonne <> 0 Then Response.Write
    Per cosa stanno?
    Inoltre ne apri 3 e ne chiudi 2...

    Edit: altra cosa che non mi è chiara è perchè nell'if <> 0 dai un else che è identico all'if stesso...non è un po' macchinoso?

  4. #4
    Utente di HTML.it L'avatar di TeoB
    Registrato dal
    Dec 2004
    Messaggi
    592
    Ho fatto cosí alla fine, e funziona:

    codice:
    <%
    dim num, col
    num=3
    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " &_
             "Data Source="& Server.MapPath("/mdb-database/db.mdb") &"; " &_
             "Jet OLEDB:Database Password=" & "xxx" & ";"
    Set objRs = Server.CreateObject("ADODB.Recordset")
    set objRs = objConn.Execute("SELECT * from tabella ")
    %>
    <table border="1" width=120*<%'num'%> align=center><tr>
    <%
    col = 0
    Do Until objrs.EOF
      If Col = 4 Then 
      Response.Write"</tr>"
      col = 0
      %>
        <td>">" width="120" height="70" border="0" /></td>
      <%
      else
      %>
        <td>">" width="120" height="70" border="0" /></td>
      <%
      col = col + 1
      end if
    objrs.movenext
    loop
    objRs.Close
    Set objRs = Nothing
    objConn.Close
    Set objConn = Nothing
    %>
    </table>
    Grazie per l'aiuto, ho studiato un po' la tua soluzione e alla fine ho capito cosa volevi fare

  5. #5
    Utente di HTML.it L'avatar di TeoB
    Registrato dal
    Dec 2004
    Messaggi
    592
    Ops, come ho fatto io logicamente si ferma alla seconda riga: se ho nove immagini ne mette 4 nella prima, va a capo, e 5 nella seconda.

    Devo mettere un altro loop, o un altro if. Le ho provate un po' tutte, ma non funziona, come posso fare? Qualcuno mi dà una traccia?


  6. #6
    Utente di HTML.it L'avatar di TeoB
    Registrato dal
    Dec 2004
    Messaggi
    592
    Uppettino?

    Sono sempre fermo all'incirca allo stesso punto, non capisco perchè non loopa come dovrebbe:

    codice:
    Do until objrs.EOF
     if col < 4 then
      %>
        <td>">" width="200" height="150" border="0" /></td>
      <%
     col = col + 1
     else
     Response.Write"</tr>"
     col = 0
     end if
    objrs.movenext
    loop
    Ma mi fa solo due righe:

    http://www.matteobinda.com/gallery.asp

    Nel database ci sono 10 o piú elementi, ne riporta solo 8 nella tabella.

  7. #7
    Ciao..
    prova questa.. semplicissima.. gli imposti solo il numero si images x riga.. qui è impostata a 4..

    <%
    SQL="SELECT * FROM galleria Where manifestazione='" & request( "manif" ) & "'"
    Set rs=Server.CreateObject("ADODB.Recordset")
    Set rs=Conn.Execute(SQL)


    dim i
    i=0
    %>
    <table cellpadding="4" cellspacing="4">
    <%
    while not rs.eof

    if i=0 then
    %>
    <tr>
    <%
    end if
    i=i+1
    %>
    <td>">[img]galleria\<%=rs([/img]" width=150 border="0"></td>
    <%
    if i=4 then
    %>
    </tr>
    <%
    i=0
    end if

    rs.movenext
    wend
    %>

  8. #8
    Utente di HTML.it L'avatar di TeoB
    Registrato dal
    Dec 2004
    Messaggi
    592
    Cosí è perfetta, grazie.

    Vorrei capire che cosa aveva di sbagliato la mia peró, giusto per sapere

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 © 2025 vBulletin Solutions, Inc. All rights reserved.