Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di lucalicc
    Registrato dal
    Sep 2002
    Messaggi
    6,926

    Visualizzare contenuto recordset su piu colonne

    vorrei visualizzare un insieme di record, indicando solo un campo, estraendolo da un recordset e mostrarlo su piu colonne con un'area ripetuta.

    Mi spiego meglio...
    il database ha una serie di record strutturati in questo modo:
    ID - Titolo - Corpo messaggio - Data ecc..

    vorrei visualizzare in una pagina solo il campo Titolo, il quale avrà un link dinamico che richiama la pagina apposita.
    Non ho problemi a fare il tutto in colonna con un'area ripetuta in questo modo:

    Titolo1
    Titolo2
    Titolo3
    ......
    Titolonn

    io pero vorrei un'impaginazione del tipo

    Titolo1 Titolo2 Titolo3
    Titolo4 Titolo5 Titolonn

    Io uso il codice riportato piu sotto (semplificato per fare capire meglio il concetto..)
    ma ovviamente il ciclo controlla se sono alla fine del recordset solo quando ricomincia il ciclo.
    In questo modo se il recordset ha un numero di record diverso da un multiplo di tre mi va in errore in quanto tento di mandare avanti il recordset anche se sono arrivato in fondo.
    Come posso fare per mostrare i record su più colonne senza errori?

    Grazie 1000 per l'aiuto
    Luca

    ecco il codice

    <%
    While ((Repeat1__numRows <> 0) AND (NOT Recordset1.EOF))
    %>
    <table width="100%" border="0" cellpadding="0" cellspacing="0">

    <tr>
    <td><%=(Recordset1.Fields.Item("titolo").Value)% ></td>
    <% Recordset1.MoveNext() %>

    <td><%=(Recordset1.Fields.Item("titolo").Value)% ></td>
    <% Recordset1.MoveNext() %>

    <td><%=(Recordset1.Fields.Item("titolo").Value)% ></td>
    </tr>
    </table>
    <%
    Repeat1__index=Repeat1__index+1
    Repeat1__numRows=Repeat1__numRows-1
    Recordset1.MoveNext()
    Wend
    %>

  2. #2
    Secondo me puoi fare così:

    codice:
    <table width="100%" border="0" cellpadding="0" cellspacing="0">
    <%
    dim numRecord = 0
    While NOT Recordset1.EOF
      If numRecord = 0 Then
        Response.Write("<tr>")
      End If
    %>
    <td><%=(Recordset1.Fields.Item("titolo").Value)%></td>
    <%
      If numRecord = 2 Then
        Response.Write("</tr>")
        numRecord = 0
      Else
        numRecord = numRecord + 1
      End If
      Recordset1.MoveNext
    Wend
    If numRecord = 1 Then
      Response.Write("<td colspan=2></td></tr>")
    Else If numRecord = 2 Then
      Response.Write("<td></td></tr>")
    End If
    %>
    </table>
    Questo dovrebbe produrti 3 colonne, se ne vuoi di più devi indicare il limite numRecord = n° colonne-1 e testare in uscita dal wend tutti i valori tranne lo 0...

    Spero di esserti stato d'aiuto!!!
    Marco Cavallo
    WebMaster & Programmer
    Il mio sito in continua evoluzione...
    Vieni a trovarmi!
    http://www.artcava.net/

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    ho recuperato questa vecchissima pagina: vedi se può servire
    codice:
    <%@ Language=VBScript %>
    <%
    	Option explicit
    	
    	'ScriviParametri
    	
    	dim Righe, Colonne, Dati, CelleRimanenti, ColonneRimanenti, dati_max
    	dim tmp_dati(), mat_dati()
    	dim p_colonne, p_dati, p_verticale, p_orientamento
    	dim i, j, n
    	
    	'numero colonne
    	p_colonne = trim(Request.Form("p_colonne")): if p_colonne = "" then p_colonne = 5 else p_colonne = cint(p_colonne)
    	
    	'numero dati
    	p_dati = trim(Request.Form("p_dati")): if p_dati = "" then p_dati = 6 else p_dati = cint(p_dati)
    	
    	'orientamento: orizzontale-verticale
    	p_orientamento = trim(Request.Form("p_orientamento")): if p_orientamento = "" then p_orientamento = "verticale" 
    	
    	if (p_orientamento = "verticale") then		
    		dati = p_dati
    		Colonne = p_colonne
    		if Colonne > dati then colonne = dati
    		Righe = ((dati - 1) \ Colonne) + 1
    		dati_max = Righe * Colonne
    		CelleRimanenti = dati_max - Dati
    		ColonneRimanenti = CelleRimanenti \ Righe
    		If ColonneRimanenti > 0 Then
    		    Colonne = Colonne - ColonneRimanenti
    		    Righe = ((Dati - 1) \ Colonne) + 1
    		    dati_max = Righe * Colonne
    		    CelleRimanenti = dati_max - Dati
    		End If
    		
    		
    	else 'orizzontale
    		dati = p_dati
    		Colonne = p_colonne
    		if Colonne > dati then colonne = dati
    		Righe = ((dati - 1) \ Colonne) + 1
    		dati_max = Righe * Colonne
    		CelleRimanenti = dati_max - Dati
    	end if
    	
    	'dati di prova
    	redim tmp_dati(dati_max - 1)
    	for i = 0 to dati - 1
    		tmp_dati(i) = i + 1
    	next
    	for i = (dati ) to dati_max - 1
    		tmp_dati(i) = ""
    	next
    	
    	'matrice degli indici
    	redim mat_dati(righe - 1, colonne - 1)
    	n = -1
    	if (p_orientamento = "verticale") then
    		for j = 0 to colonne - 1
    			for i = 0 to righe - 1
    				n = n + 1
    				mat_dati(i, j) = n
    			next 
    		next
    	else
    		for i = 0 to righe - 1
    			for j = 0 to colonne - 1
    				n = n + 1
    				mat_dati(i, j) = n
    			next 
    		next
    	
    	end if
    %>
    
    <HTML>
    <HEAD>
    <META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
    
    <LINK rel="stylesheet" type="text/css" href="/archivioesempi/Stile.css">
    
    <STYLE TYPE="text/css" MEDIA=ALL>
    	TABLE
    	{
    		border-collapse: separate;
    	}
    
    </STYLE>
    <STYLE TYPE="text/css" MEDIA=SCREEN></STYLE>
    <STYLE TYPE="text/css" MEDIA=PRINT></STYLE>
    
    <SCRIPT SRC="/archivioesempi/code.js"></SCRIPT>
    
    <SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript>
    <!--
    function p_orientamento_onclick()
    {
    	document.form1.submit();
    }
    
    //-->
    </SCRIPT>
    </HEAD>
    <BODY>
    
    <h1>Elenco dati in colonne</h1>
    
    <form method=post id=form1 name=form1 >
    	<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=1>
    		<tr>
    			<td><label for="p_orientamento1">Orizzontale: </label><INPUT type="radio" id=p_orientamento1 name=p_orientamento value="orizzontale" <%=checked(p_orientamento, "orizzontale")%>  LANGUAGE=javascript onclick="return p_orientamento_onclick()"></td>
    			<td><label for="p_orientamento2">Verticale: </label><INPUT type="radio" id=p_orientamento2 name=p_orientamento value="verticale" <%=checked(p_orientamento, "verticale")%> LANGUAGE=javascript onclick="return p_orientamento_onclick()"></td>
    		</tr>
    		<TR>
    			<TD>
    				NumeroColonne:		
    			</TD>
    			<TD>
    				<INPUT id=text1 name=p_colonne value=" <%=p_colonne%>">		
    			</TD>
    		</TR>
    		<TR>
    			<TD>
    				Numero Dati:		
    			</TD>
    			<TD>
    				<INPUT id=text2 name=p_dati value=" <%=p_dati%>">
    			</TD>
    		</TR>
    		<TR>
    			<TD colspan=2><INPUT id=submit1 type=submit value=Incolonna ></TD>
    		</TR>
    	</TABLE>
    
    </form>
    
    <HR>
    
    <table border=1 cellspacing=0  cellpadding=2>
    	<tr>
    		<th colspan="<%=Colonne%>">Numero</th>
    	</tr>
    	
    <%	for i = 0 to Righe - 1%>
    		<tr>
    <%		for j = 0 to Colonne - 1 %>		
    			<td><%=tmp_dati(mat_dati(i,j))%></td>
    <%		next %>
    		</tr>
    <%	next %>			
    
    
    </table>
    
    
    
    </BODY>
    </HTML>
    
    <%
    	'--------------------------------------------------------------
    	'ristabilisce la selezione in un checkbox
    	'--------------------------------------------------------------
    	function checked(firstVal, secondVal)
    		if cstr(firstVal) = cstr(secondVal) then
    			checked = " CHECKED "
    		else
    			checked = ""
    		end if
    	end function
    
    
    
    %>
    Pietro

  4. #4
    Utente di HTML.it L'avatar di lucalicc
    Registrato dal
    Sep 2002
    Messaggi
    6,926
    vi ringrazio entrambi per la veloce e precisa risposta.
    proverò a portare avanti l'idea di artcava, mi sembra
    più leggera e facile da implementare...

    grazie ancora alle prox
    Luca

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Eppure ti consiglio di dare un'occhiata: ai suoi tempi avevo la necessità di visualizzare i dati tipo elenco telefonico:

    1 3 5
    2 4 6

    oltre che

    1 2 3
    4 5 6


    Quella è la pagina che ho fatto per gli esperimenti: ecco perchè è un po' lunga.
    Ho fatto delle prove col controllo DataList di asp.net e mi pare che gli stia alla pari...

    A me interessa, se la usi, se funziona e, se il caso le modifiche apportate; oppure quali altre tecniche hai usato
    Pietro

  6. #6
    Utente di HTML.it L'avatar di lucalicc
    Registrato dal
    Sep 2002
    Messaggi
    6,926
    Come già detto ringrazio tutti per i consigli che mi sono stati dati.

    Ho preferito la soluzione proposta da artcava in quanto molto piu semplice,compatta e perchè è quella che bene o male ho capito come funzionava in modo da personalizzare secondo le mi esigenze.
    Ho però riscontrato due errori, o almeno cosi me le indicava sia il server locale che quello in hosting e vi riporto le correzioni che ho apportato.
    Ho indicato in rosso quello che ho modificato.
    Per il resto funziona egregiamente proprio come avevo bisogno.
    Ancora grazie
    Luca

    <table width="100%" border="0" cellpadding="0" cellspacing="0">
    <%
    dim numRecord
    numRecord = 0
    While NOT Recordset1.EOF
    If numRecord = 0 Then
    Response.Write("<tr>")
    End If
    %>
    <td><%=(Recordset1.Fields.Item("titolo").Value)% ></td>
    <%
    If numRecord = 2 Then
    Response.Write("</tr>")
    numRecord = 0
    Else
    numRecord = numRecord + 1
    End If
    Recordset1.MoveNext
    Wend
    If numRecord = 1 Then
    Response.Write("<td colspan=2></td></tr>")
    Else If numRecord = 2 Then
    Response.Write("<td></td></tr>")
    End If
    End If
    %>
    </table>

  7. #7
    Ops!

    Piccole sviste, chiedo scusa... In fondo però non l'ho mai testata

    Grazie a te, e buon lavoro...
    Marco Cavallo
    WebMaster & Programmer
    Il mio sito in continua evoluzione...
    Vieni a trovarmi!
    http://www.artcava.net/

  8. #8
    Scusa ma sono un testardo...

    L'ultimo End If, quello aggiunto in rosso quale ramo If chiude?
    Non vorrei essermi rin...to ( ) tutto di colpo...

    Marco Cavallo
    WebMaster & Programmer
    Il mio sito in continua evoluzione...
    Vieni a trovarmi!
    http://www.artcava.net/

  9. #9
    Utente di HTML.it L'avatar di lucalicc
    Registrato dal
    Sep 2002
    Messaggi
    6,926
    presumo chiuda l'Else if....

    sono sincero...sono andato a tentoni...
    il server mi rispondeva con un errore indicandomi quella linea
    e dicendo che si aspettava la chiusura dell'If..
    ho aggiunto l'End if e funziona...

    da questo a chiedermi il perchè.....

    ciao e grazie
    Luca

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    16
    Come posso fare per aggiungere uno scorrimento record dopo 8 record visualizzati?

    grazie

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.