Newsgroup: it.comp.www.asp
Titolo: Come impostare una tabella a griglia

Ciao a tutti. Il problema sarà banale per i più ma io non ci trovo uscita.
Ho un db, che contiene dei record in ordine, diciamo un paio di centinaia.
Quando io creo la pagina asp che mi mostra i record la posso impostare con
una tabella in modo che ad ogni record il codice crei una nuova riga (o
colonna) così che alla fine il risultato sia una tabella con tante righe
quanti sono i record estratti che corrispondono al criterio dell'sql. E
diventa una cosa simile:
<table>
<%recordset%>
<riga di tabella><%percorso file immagine%></riga di tabella>
<%loop%>
<%chiusura recordset%>
</table>
Ora, ipotizziamo che i record da estrarre siano delle immagini. Vorrei fare
in modo che invece di metterle tutte in fila una sotto l'altra, la pagina
venisse creata come una griglia, dove per ogni riga ci sono tipo 4 celle
(della tabella, non del db) ed in ognuna c'è una immagine, immagine presa in
sequenza dal db (so che nel db non posso mettere immagini, infatti richiamo
solo il nome del file, non l'immagine in se').
Parlando un po' più terra terra. La pagina apre una tabella, crea la prima
riga, prende il primo nome del file nel record del db e lo mette in una
celletta (quindi apre e chiude una colonna), poi va avanti fino ad aver
fatto ad es 4 colonne. Finite le 4 colonne va a capo, apre un'altra riga
della tabella, fa altre 4 colonne con altrettante immagini e così via, fino
a che non finiscono le immagini. Come devo fare per impostare la tabella e
il recordset nel codice asp in modo che mi faccia tutto questo in
automatico?
Grazie a tutti.
Fede

La butto cosi' in 5 minuti...
Il recordset rimane cosi' com'e'.
- Crei la tabella e la prima riga con <table><tr>
    - Ad ogni MoveNext non fai altro che creare un <td> IMMAGINE </td>
    - ogni N record fai un </tr> <tr>
- alla fine del recordset, chiudi con un </tr></Table>
Nel tuo caso, N=4.
Come fai a contare ogni quattro record? Fai un contatore che parte da 1 e lo
incrementi ad ogni MoveNext.
Per sapere se sei ad un multiplo di N devi solo controllare se la parte
decimale di contatore/N e' uguale a zero.
(ci vorrebbe la funzione MOD ma mi pare non ci sia in VBScript... o no?)
IF (contatore/N - int(contatore/N)) = 0 then
    </tr>
    <tr>
END IF
Se non sono stato chiaro, richiama.

 ha scritto nel messaggio
news:a6qetd$ggo67$1...@ID-130040.news.dfncis.de...

Bellissimo, solo che sono proprio ignorante in canna quindi non saprei
nemmeno come fare a creare questo contatore e tantomeno a farlo incrementare
di uno ogni movenext....
Se son troppo ignorante contattami in privato, sempre che tu abbia del tempo
da perdere :-))
Fede

Pero' devi sapere un minimo di programmazione. Mi pare strano che tu riesca
ad aprire connessioni a database e usare recordset, e tu abbia difficolta'
con le variabili.
Per dichiarare ed inizializzare il contatore fai (appena apri il recordset):
    contatore=1
Per incrementarlo, dopo il Movenext fai:
    contatore=contatore+1
Questo codice lo copi cosi' com'e dopo che scrivi, e ti chiude una riga e te
ne apre un'altra:
    IF (contatore/N - int(contatore/N)) = 0 then
        </tr>
        <tr>
    END IF
Ti agevolo questa paginetta che mi sono divertito a fare come esercizio.
Ciao!
<html>
<head>
<title>Browse</title>
</head>
<body>
<%
contatore=0
N=4
%>
<table border=1>
<tr>
<%
for a=1 to 100
contatore=contatore+1
%>
    <td>
        <%=contatore%>
    </td>
<%IF (contatore/N - int(contatore/N)) = 0 then%>
        </tr>
        <tr>
<% END IF %>
<% next %>
</tr>
</Table>
</body>
</html>


compreso... ^_^
allora fai una cosa cosi'
------------------
<table>
<%i=0%>
<%do until recordset.eof%>
	<% if i = 0 Then %><tr>
	<td><%percorso file immagine%></td>
	<% if i = 3 Then %></tr>
	<%i=0
	end if%>
 
<% i = i + 1
   recordset.movenext
loop%>
<%chiusura recordset%>
<%if i <> 0 then 'crei altre cellette vuote e chiudi l'ultima riga della
tabella %>
</table>
--------------------
dovrebbe funzionare...

 %>
Tanto per essere pignoli, nel caso che qualcun'altro stia seguendo il
thread, il contatore all'inizio deve essere settato a 1, non a zero,
altrimenti la prima immagine risulta
<% IF (0/4 - int(0/4)) =  0 THEN %>
che matematicamente è scorretto, quindi in realtà il codice chiude la prima
riga direttamente dopo la prima immagine :-)
Cmq ho fatto con i tuoi suggerimenti e funziona alla perfezione.
:-)))))
Grazie!!
Fred

 altrimenti la prima immagine risulta
Negativo!
Infatti prima incremento il contatore, poi scrivo e POI faccio l' IF.
Infatti se guardi l'HTML generato dal codice, e' tutto corretto.
Ciao!

 ha scritto nel messaggio
news:a6sjju$gn95b$1...@ID-130040.news.dfncis.de...

Si, ok, con il codice che hai fatto tu si, ma quello che ho fatto io no.
copio e incollo:
<head>
<%
Dim contatore
contatore=1
Dim N
N=4
%>
</head>
<body>
 <%
Set Foto = CreateObject("ADODB.Recordset")
Sql = "SELECT * FROM iscritti WHERE flagFoto ORDER BY IDutente"
Foto.Open Sql, dataconn, 1, 1
do while NOT Foto.EOF
%>
                      <td width="155" bordercolor="#FFFFFF">
                        <div align="center"><img
src='../img/soci/TN_<%=Foto("Foto")%>' border="0"><br>
                          <% IF Foto("Nickname") <> "" THEN %>
                          <%=Foto("Nickname")%>
                          <% ELSE %>
                          <%=Foto("Nome")%>
                          <% END IF%>
                        </div>
                      </td>
                      <% IF (contatore/N - int(contatore/N)) = 0 THEN %>
                    </tr>
                    <tr>
                      <% END IF %>
<%
Foto.MoveNext
contatore=contatore+1
loop
Foto.Close
Set Foto = Nothing
%>
</body>
Non so se sintatticamente è corretto, però funziona alla perfezione