si ma questo è javascript, preso da qualche parte qui su html.it dalla mailing list un javascript a settimana:
codice:
<script language="javascript" type="text/javascript">
var valoridb = new Object();
valoridb["primo"] = [
{value:$chiave1, text:$text1},
{value:$chiave2, text:$text2},
{value:$chiave3, text:$text3},
{value:$chiave4, text:$text4},
{value:$chiave5, text:$text5},
];
valoridb["secondo"] = [
{value:$chiave1, text:$text2},
{value:$chiave2, text:$text2},
{value:$chiave1, text:$text1},
{value:$chiave1, text:$text1},
{value:$chiave1, text:$text1},
];
// ...... valoridb["terzo"]......
function createSelect(chooser,formElement)
{
var newElem;
var where = (navigator.appName == "Microsoft Internet Explorer") ? -1 : null;
var cityChooser = chooser.form.elements[formElement];
while (cityChooser.options.length)
{
cityChooser.remove(0);
}
var choice = chooser.options[chooser.selectedIndex].value;
var db = valoridb[choice];
newElem = document.createElement("option");
newElem.text = "selezionare un valore dalla select che trovate sopra";
newElem.value = "";
cityChooser.add(newElem, where);
if (choice != "")
{
for (var i = 0; i < db.length; i++)
{
newElem = document.createElement("option");
newElem.text = db[i].text;
newElem.value = db[i].value;
cityChooser.add(newElem, where);
}
}
}
</script>
poi nell'html
<select name="NOMECHETIPARE" onchange="createSelect(this,'selectdariempire')">
<option value="primo">PRIMO</option>
<option value="secondo">SECONDO</option>
</select>
<select name="selectdariempire">
<option value="">selezionare un valore dalla select che trovate sopra</option>
</select>
[/CODE]
Ora il lavoro che ti tocca è valorizzare la strin=ga javascript
di cui sopra con la tabella principale e mettere al posto di $chiave1 e $text1 i valori della tabella correlata con loop annidati o filtrando via via il recordset
ESEMPIO (tralasciando la creazione di oggetti connection ed altre cavolate :
codice:
<script language="javascript" type="text/javascript">
<% RsFirst.Open "Select keyTipologia,tipologia from tabella_tipologie_prodotti order by tipologia",Connection,2,3
RsSecond.Open "Select keyProdotto,nomeProdotto,idTipologia from tabella_prodotti",Connection,2,3
while not RsFirst.eof %>
valoridb[<%=RsFirst("keyTipologia")%>] = [
<% RsSecond.filter = "idTipologia = " & RsFirst("keyTipologia")
k = 0
while not RsSecond.eof
if k = 0 then
outPutJs = outPutJs & "{value:" & RsSecond("keyProdotto") & ", text:'" & RsSecond("nomeProdotto") & "'}" & vbcrlf
else
outPutJs = outPutJs & ",{value:" & RsSecond("keyProdotto") & ", text:'" & RsSecond("nomeProdotto") & "'}" & vbcrlf
end if
RsSecond.movenext
k = k + 1
wend
RsSecond.Filter = "" : Response.write outPutJs : outPutJs = "" %>
];
<% RsFirst.movenext
wend
%>
function createSelect(chooser,formElement)
{
var newElem;
var where = (navigator.appName == "Microsoft Internet Explorer") ? -1 : null;
var cityChooser = chooser.form.elements[formElement];
while (cityChooser.options.length)
{
cityChooser.remove(0);
}
var choice = chooser.options[chooser.selectedIndex].value;
var db = valoridb[choice];
newElem = document.createElement("option");
newElem.text = "selezionare un valore dalla select che trovate sopra";
newElem.value = "";
cityChooser.add(newElem, where);
if (choice != "")
{
for (var i = 0; i < db.length; i++)
{
newElem = document.createElement("option");
newElem.text = db[i].text;
newElem.value = db[i].value;
cityChooser.add(newElem, where);
}
}
}
</script>
<select name="NOMESELECT" onchange="createSelect(this,'selectdariempire')">
<% RsFirst.movefirst
while not RsFirst.eof %>
<option value="<%=RsFirst("keyTipologia")%>"><%=Rs("tipologia")%></option>
<% RsFirst.movenext
Wend
%>
</select>
<select name="selectdariempire">
<option value="">selezionare un valore dalla select di sopra</option>
</select>
Ora magari se ci sono veramente tanti dati ti conviene magari usare loop annidati tra due recordset creati con
il metodo execute dell'oggetto connection (e quindi la pagina risulta + veloce da caricare) o se è una select che ti porti dietro nella
navigazione metti l'output js in una variabile di sessione (a questo punto devi accodare l'intero output nella variabile e mai resettarla)
P.s perdonami se ho tralasciato qualcosa , l'importante è che hai capito il concetto e le fasi da sviluppare