14 messaggi dal 14 dicembre 2008
Salve, ho un problemino inerente la visualizzazione di un recordset.

Ho un codice con una select che estrapola dati da un database access e li visualizza a video. Nessun problema. Il fatto é che invece che avere una visualizzazione lineare (un record ogni <tr>), vorrei avere 4 o 5 record inseriti in altrettante celle e poi proseguire in una altra riga altri 4 o 5, ecc. insomma una disposizione a quadricola.

Il fatto é che tocco asp ogni 4 5 mesi per lavoro e ogni volta devo ricominciare da capo.

Posto il codice, se gentilmente qualcuno puó darmi una mano.

Grazie


<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!--#include file = "config.asp"-->
<%
'Chiamo la funzione di connessione al database
Call CnOpen()
' Connessione alla tabella sections e creazione recordset
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM sections", Cn, 1
' Connessione alla tabella links e creazione recordset
Set rsImg = Server.CreateObject("ADODB.Recordset")
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento senza titolo</title>
</head>

<body>

<table width="760" border="0" cellspacing="0" cellpadding="0">
<%
While Not rs.EOF
id = rs("id")
%>

<!-- Inizio area ripetuta -->
<tr>
<td><%=(rs("section"))%></td>
</tr>
<%
rsImg.Open "SELECT TOP 3 * FROM links WHERE rel_id = " & id, cn, 1
While Not rsImg.EOF
%>
<tr>
<td><a href="<%=(rsImg("url_site"))%>" target="_blank"><img src="<%=(rsImg("url_image"))%>" border="0" /></a></td>
</tr>
<%
rsImg.MoveNext
Wend
rsImg.close
%>
<!-- Fine area ripetuta -->
<%
rs.MoveNext
Wend
rs.close
%>
</table>
<%
Call CnClose()
%>
</body>
</html>
547 messaggi dal 24 maggio 2002
Contributi
Se hai bisogno di effettuare un'operazione ogni x giri usa l'operatore Mod. Questo ti restituisce 0 se la divisione non ha resto ovvero 10 Mod 5 torna 0 ma anche 10 Mod 10 etc...

qui trovi un esempio
http://ns7.webmasters.com/caspdoc/html/vbscript_mod_operator.htm

Marco.
14 messaggi dal 14 dicembre 2008
grazie per la risposta Marco, vado subito a vedere

Surya
14 messaggi dal 14 dicembre 2008
Salve, ho trovato nel frattempo anche questo script che ho adattato alle mie esigenze. C'é peró un problema: come si evince sto tentando di nidificare due cicli while.

Il primo ciclo gestisce il primo recordset che estrae le macrosezioni del sito.
Il secondo ciclo gestisce il secondo recordset che estrae il contenuto di ogni macrosezione.

Nelle mie intenzioni, il flusso di visualizzazione dei dati dovrebbe essere:

- Prima Macrosezione
- contenuto prima macrosezione

- Seconda Macrosezione
- contenuto seconda macrosezione

- Terza Macrosezione
- contenuto terza macrosezione

ecc....

Invece ottengo

- Prima Macrosezione
- contenuto prima Macrosezione
- contenuto seconda macrosezione
- contenuto terza macrosezione

- Seconda Macrosezione
- Terza Macrosezione
- Quarta Macrosezione

ecc...

Posto il codice, qualcuno per favore sa dirmi come posso correggere?

Grazie
Surya

----------------------------------------------------------------------

<%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%>
<%
var Cn = new ActiveXObject("ADODB.Connection");
Cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("/mdb-database/db.mdb"));
var Mostra = Cn.Execute("SELECT * FROM links ORDER BY id")
var Cn2 = new ActiveXObject("ADODB.Connection");
Cn2.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("/mdb-database/db.mdb"));
var Mostra2 = Cn2.Execute("SELECT * FROM sections ORDER BY id")
var conta = 0; //
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento senza titolo</title>
</head>

<body>
<table align="center" border="1">
<%
while (!Mostra2.EOF)
{
%>
<tr>
<td><%=(Mostra2("section"))%></td>
</tr>
<tr>
<%
while (!Mostra.EOF)
{
if (conta == 5)
{
conta = 0;
%>
</tr><tr><td><a href="<%=(Mostra("url_site"))%>" target="_blank"><img src="<%=(Mostra("url_image"))%>" border="0" /></a></td>
<%
}
else
{
%>
<td><a href="<%=(Mostra("url_site"))%>" target="_blank"><img src="<%=(Mostra("url_image"))%>" border="0" /></a></td>
<%
}
conta++;
Mostra.MoveNext();
}
%>
</tr>
<%
Mostra2.MoveNext();
}
%>
</table>
<%Cn.Close()%>
<%Cn2.Close()%>
</body>
</html>
27 messaggi dal 27 maggio 2007
Ciao Surya
nel database ci sono due tabelle c'è una relazione tra le due seno la vedo dura a far corrispondere i dati.
basta creare un campo comune tra le due tabelle, quindi Prima Macrosezione carico valore di questa richiamo sql della seconda tabella where valore Prima Macrosezione ecc..
spero di non aver capito male e di essere stato di aiuto.
14 messaggi dal 14 dicembre 2008
Ciao max10, grazie per l'intervento
In effetti c'é un campo comune e le tabelle sono correttamente relazionate
Da quel punto di vista é tutto corretto
Il problema é che non vengono visualizzate con il giusto ordine. Non riesco in pratica a fare intersecare la sequenza di records ovenienti dalle due tabelle

Grazie
Surya
27 messaggi dal 27 maggio 2007
Ciao Surya
il tuo primo listano l'o modificato utilizzando un array per gestire la prima tabella supponendo che section sia il secondo.
l'array e bidimensionale quindi id e la colonna 0 e section e colonna 1.
prova a vedere se ti va cosi visto che non o avuto tempo di provarlo.


<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!--#include file = "config.asp"-->
<%
'Chiamo la funzione di connessione al database
Call CnOpen()
' Connessione alla tabella sections e creazione recordset
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM sections", Cn, 1
' Carico valori tabella su array bidimensionale
tabella1 = rs.GetRows ()
rs.close
numrows = ubound(tabella1, 2)
' Connessione alla tabella links e creazione recordset
Set rsImg = Server.CreateObject("ADODB.Recordset")
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento senza titolo</title>
</head>

<body>

<table width="760" border="0" cellspacing="0" cellpadding="0"><tr>
<%
For r = 0 To numrows
id = tabella1(0,r)
%>

<!-- Inizio area ripetuta -->
<tr>
<td><%=tabella1(1,r)%></td>
</tr>
<%
i = 0
rsImg.Open "SELECT TOP 3 * FROM links WHERE rel_id = " & id, cn, 1
While Not rsImg.EOF

if i = 3 then
i = 0
response.write "</tr><tr>"
end if %>
<td><a href="<%=(rsImg("url_site"))%>" target="_blank"><img src="<%=(rsImg("url_image"))%>" border="0" /></a></td>
<%
i = i + 1

rsImg.MoveNext
Wend
rsImg.close
%> </tr>

<!-- Fine area ripetuta -->
<%
next
%>
</table>
<%
Call CnClose()
%>
</body>
</html>

buon lavoro...

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.