ti allego il codice da me modificato
esempo3.asp
Codice:
<%@LANGUAGE = VBScript%>
<!--#include file="config.asp"-->
<%
'Call CnClose()
Call CnOpen()
%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="it" http-equiv="Content-Language" />
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>pagina principale</title>
<script type="text/javascript" src="gare.js"></script>
</head>
<body>
<%dim atleta %>
<form name="frmprova" id="frmprova" method="post" action="" >
<p>PAGINA DI ESEMPIO CHE CHIAMA 1 PAGINA DIVERSA</p>
<p>Esempio</p>
<p> </p>
<select name="atleta">
<option value="0"></option>
<%
Dim SQL2
SQL2 = "SELECT * FROM giocatori ORDER BY nome ASC"
rs.Open SQL2, cn, 1
While rs.EOF = False
%>
<option value="<%=rs("IDgioc")%>"><%=rs("nome")%></option>
<%
rs.MoveNext
Wend
rs.Close
%>
</select>
<!-- </form> -->
<br><br>
<%dim gare %>
<!-- <form name="frmgare" id="frmgare" method="post" action=""> -->
<select name="gare"> <!-- onchange="Batterie(this.value)"> -->
<option value="0"></option>
<%
Dim SQL
SQL = "SELECT * FROM gare ORDER BY IDgara ASC"
rs.Open SQL, cn, 1
While rs.EOF = False
%>
<option value="<%=rs("IDgara")%>"><%=rs("dove")%></option>
<%
rs.MoveNext
Wend
rs.Close
%>
</select>
</form>
<p style="cursor:pointer;" title="seleziona pagina 1.4"><a onclick="OpenPage('Esempio1_4.asp')">4. PAGINA ESEMPIO 1.4</a></p>
</body>
</html>
pagina 1.4
Codice:
<%
Dim atleta, gare
for i=1 to Request.Form("atleta").Count
atleta = Request.Form("atleta")(i)
next
for i=1 to Request.Form("gare").Count
gare = Request.Form("gare")(i)
next
%>
<!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 content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Select</title>
</head>
<body>
PAGINA 4
PROVA ricezione valori da pagina iniziale via POST
<%
response.write("<br>l' atleta vale="&atleta)
response.write("<br>la gara vale="&gare)
%>
</body>
************************* NOTA TECNICA
Ciao vedo che stai facendo pratica ma naturalmente ti sei incappato nel problema più comune per chi inizia a
programmare seriamente...
Per popolare la seconda select in base alla seclta della prima l'unica strada percorribile a meno di non aver tutte le righe in memoria, di ACCEDERE A SERVER PER ESGUIRE UNA NUOVA QUERY IN BASE ALLA SCELTA DELLA PRIMA SELECT: QUESTO è POSSIBILE TRAMITE AJAX CHIAMANDO SUL SERVER UNA ROUTINE E PASSANDOGLI I PARAMETRI CORRETTI...
Allora sei pronto per capire quello che ti darò come esempio?
Quando selezioni la select nella prima select hai a disposizione l'evento onchang()....
Questo deve chiamare una funzione javascript lato client passandogli il valore della option selezionata....
Facciamo per esempio cha chiami la funzione in questo modo...
...onchange="SelezionaSelect1(this.value)"....
... e nella zona head relativa a <script... come ti faccio vedere
avrai la funzione come ti posto io con una mia versione semplificata....
la seconda select deve stare in un tag "div"
Codice:
<div id="Sel2">.....
qui c'è la seconda select con i valori iniziali che saranno poi sostituiti
da ajax
</div>
perche sarà ripiazzata da quello che ritornerà il server a fronte della scelta sulla prima select
chiamando ajax e passandogli il parametro option della prima select
Codice:
<script type="text/javascript" >
function SelezionaSelect1(opt) {
var xhttp = new XMLHttpRequest();
var ans ' sta per answer...
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
ans=this.responseText;
document.getElementById("Sel2").innerHTML= ans;
}
};
xhttp.open("GET", "Selezione2.asp?opzione="+opt, true);
xhttp.send();
}
Il problema è ora devi scrivere il sottoprogramma Selezione2.asp...
naturalmente questo dele solo fare un response della seconda select completa....
quindi
...
il codice del sottoprogramma circa ... come hai fatto prima sopra...
e deve avere il nome come nella chiamata ajax
naturalmente se selezioni un atleta questo vuol dire che vuoi vedere le gare di questo atleta e ho corretto la query..
ma questo lo devi vedere tu se no mi spieghi da zero cosa vuoi fare con le due select...
Codice:
<select name="gare"> <!-- onchange="Batterie(this.value)"> -->
<option value="0"></option>
<%
dim opzione,atleta
for i=1 to Request.Querystring("opzione").Count
opzione=Request.Querystring("opzione")(i)
next
atleta=opzione
cnOpen ' apre il recordset
Dim SQL
SQL = "SELECT * FROM gare where atleta='"&atleta&"'"
rs.Open SQL, cn, 1
While rs.EOF = False
%>
<option value="<%=rs("IDgara")%>"><%=rs("dove")%></option>
<%
rs.MoveNext
Wend
rs.Close
%>
</select>
cnClose
Pressappoco quiesto è il codice del modulo sul server che devi chiamare ...
Naturalmente devi assemblare il tutto e testarlo.... elavorarci sopra
Se ho tempo ti farò un esempio preciso ... se hai deifficltà rispondi pure sarò paziente ad aiutarti
...
ciao