Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    395

    2 Drop Down menu dinamici

    Ciao a tutti, il mio obiettivo e' avere due drop down menu (2 select html)che prendono i valori da due tabelle, in un db access, collegate fra loro da un campo numerico con integrita' referenziale. La relazione e' 1 a n
    ecco le tabelle:
    ProposalResult:
    Id (contatore, chiave primaria)
    Result (testo)

    ReasonResult:
    IdReason (contatore, chiave primaria)
    RefId ( numerico collegato a Id nella tabella ProposalResult)
    Reason (testo)

    Praticamente la prima select porta dei valori tipo Vinto, Perso, in Progresso ecc. questi valori una volta selezionati devono fare un refresh sulla tabella ReasonResult dando le varie possibilita' per cio' che e' stato selezionato. Ex: Perso mi seleziona sulla seconda select una seir di motivi per cui e' stato perso (+possibilita' SOLO per perso)
    Lo script e' tutto in Asp ed ora ve lo copio:
    <select name="ProposalResult"" onChange="this.form.update('Reason')">
    <%
    sqlResult= "SELECT Id,Result FROM ProposalResult ORDER BY Result"
    Set rsResult = Server.CreateObject("ADODB.Recordset")
    rsResult.Open sqlResult, conn ,3,3

    Dim passaggioResult

    PassaggioResult = Request.Form("ProposalResult")
    if PassaggioResult="" then PassaggioResult=0'rs1("Result")
    dim provaResult
    do while not(rsResult.eof)
    %>
    <option value="<%=rsResult.fields("Id")%>"
    <%
    provaResult=rsResult(0)
    if (provaResult)=(passaggioResult) then response.write " selected "
    %>><%=rsResult.fields("Result")%></option>
    <%
    rsResult.movenext
    loop
    rsResult.Close
    set rsResult = Nothing
    %>
    </select>
    <select name="Reason" size="1" id="select">

    <%
    Dim RefId
    RefId = Request.Form("ProposalResult")
    if RefId <>"" then
    sqlRR = "SELECT * FROM ReasonResult where RefId= "&RefId&" ORDER BY Reason"
    Set rsRR = Server.CreateObject("ADODB.Recordset")
    rsRR.Open sqlRR, conn ,3,3

    Dim passaggio5

    Passaggio5 = Request.Form("ProposalResult")
    if Passaggio5="" then Passaggio5=0
    dim prova5
    do while not(rsRR.eof)
    %>
    <option value="<%=rsRR.fields("Reason")%>"
    <%
    prova5=rs(0)
    if (prova5)=(passaggio5) then response.write " selected "
    %>><%=rs.fields("Reason")%></option>
    <%
    rsRR.movenext
    loop
    rsRR.Close
    set rsRR = Nothing
    end if
    %>
    </select>
    Praticamente la prima tabella e' ok ma non mi fa il refresh sulla seconda che rimane sempre vuota....
    per fare il refresh ho fatto cosi':
    <select name="ProposalResult"" onChange="this.form.update('Reason')">
    e poi su Reason prendo con una variabile l'id del record nella tabella ProposalResult....
    Penso che concettualmente non ci siano errori pero' qualcosa non va nello script, qualcuno mi sa dare una mano?
    Grazie in anticipo e ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    395
    Ciao nessuno a qualche suggerimento?
    Ho cercato su internet ma non ho trovato nessun esempio cosi' esaustivo....

    ciao

  3. #3
    In questo forum, qualche tempo fa, ho postato un esempio che fa al caso tuo.
    Fai una ricerca usando il mio nome e le parole select dinamiche.

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    395
    Grazie per il suggerimento ti riferisci a questo:
    sì, è un mix di asp e javascript
    codice by mems


    Le list box dinamiche dovrebbero essere le SELECT FORM e, nel nostro caso, la dinamicità sta nel fatto che la seconda SELECT apparirà solo dopo aver scelto qualcosa dalla prima e con una serie di dati relazionati, ovviamente, alla scelta fatta sualla prima select.
    Questo è un esempio basato su due tabelle di un db così composte:
    tabella1
    id_voce1 - contatore
    voce1 - testo

    tabella2
    id_voce2 - contatore
    voce2 - testo
    id_voce1 - numerico (relazione tra tabella2 e tabella1)

    codice:
    <html>
    <head><title></title>
    <script language="JavaScript" type="text/JavaScript">
    <!--
    function jumpMenu(targ,selObj,restore){ //v3.0
    eval(targ+".location='"+selObj.options.value+"'");
    if (restore) selObj.selectedIndex=0;
    }
    //-->
    </script>
    </head>
    <body>
    <form name="selezione" method="post" action="">
    <%
    pagina = request.servervariables("path_info")
    id = request.querystring("id")

    if len(id) > 0 and isnumeric(id) then
    id = clng(id)
    else
    id = 0
    end if

    set conn = server.createobject("adodb.connection")
    conn.open ' la vostra stringa di connessione...

    sql = "select * from tabella1"

    set rs = conn.execute(sql)

    if not rs.eof then
    %>
    <select name="tabella1" onChange="jumpMenu('parent',this,0)">
    <option value="<%=pagina%>?id="></option>
    <% do until rs.eof %>
    <option value="<%=pagina%>?id=<%=rs("id_voce1")%>"<% if rs("id_voce1") = id then %> selected<% end if %>><%=rs("voce1")%></option>
    <%
    rs.movenext
    loop
    end if
    %>
    </select>
    <%
    rs.close
    set rs = nothing

    if id > 0 then

    sql = "select * from tabella2 where id_voce1 = " & id

    set rs = conn.execute(sql)

    if not rs.eof then
    %>
    <select name="tabella2">
    <option value="<%=rs("id_voce2")%>"></option>
    <% do until rs.eof %>
    <option value="<%=rs("id_voce2")%>"><%=rs("voce2")%></option>
    <%
    rs.movenext
    loop
    end if
    %>
    </select>
    <%
    rs.close
    set rs = nothing

    end if

    conn.close
    set conn = nothing
    %>
    </form>
    </body>
    </html>

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    395
    L'idea e' ottima e funzionerebbe se non avessi altri parametri caricati nella stessa pagina...
    come posso fare un refresh senza linkare niente, della serie posso cambiare il primo option value?
    <option value="<%=pagina%>?id=">
    quando ricarico da capo la pagina mi da un errore del tipo che ha perso ALTRI parametri... non posso passarglieli tutti perche' sono veramente tanti, qualche suggerimento?
    grazie e ciao

  6. #6
    Originariamente inviato da tabarto
    L'idea e' ottima e funzionerebbe se non avessi altri parametri caricati nella stessa pagina...
    come posso fare un refresh senza linkare niente, della serie posso cambiare il primo option value?
    <option value="<%=pagina%>?id=">
    quando ricarico da capo la pagina mi da un errore del tipo che ha perso ALTRI parametri... non posso passarglieli tutti perche' sono veramente tanti, qualche suggerimento?
    grazie e ciao

    pui avere anche N parametri nella stessa pagina, dove N è un numero che va da 0 a Infinito (beh non esageriamo eh ) l'importante è che te li porti dietro tutti e N
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #7
    No. Non era quello l'esempio.
    Cerca meglio. C'è un esempio dove si popolano 2 combo, dove la seconda prende i dati relazionati in base all'ID passato dalla prima.

  8. #8
    Eccolo.
    Prendi spunto da qua:
    codice:
    <%
    idRegione = request.queryString("idRegione")
    if isNumeric(idRegione) then 
    	idRegione = cLng(idRegione)
    else
    	idRegione = 0
    end if
    
    idProvincia = request.queryString("idProvincia")
    if isNumeric(idProvincia) then 
    	idProvincia = cLng(idProvincia)
    else
    	idProvincia = 0
    end if
    
    idComune = request.queryString("idComune")
    if isNumeric(idComune) then 
    	idComune = cLng(idComune)
    else
    	idComune = 0
    end if
    
    questaPagina = request.serverVariables("PATH_INFO")
    %>
    <form>
    <%
    set conn = server.createObject("ADODB.Connection")
    conn.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & server.mapPath("\samples\mdb-database\database.mdb")
    
    	sql = "SELECT * FROM tblRegioni ORDER BY regione"
    	set rs = conn.execute(sql)
    	
    		if not rs.eof then
    %>
    			<select name="idRegione" onchange="document.location.href='<%=questaPagina%>?idRegione='+this.value;">
    				<option value="">SELEZIONA</option>
    <%
    			do until rs.eof
    %>
    				<option value="<%=rs("idRegione")%>"<% if idRegione = rs("idRegione") then %> selected="selected"<% end if %>><%=rs("regione")%></option>
    <%
    			rs.moveNext
    			loop
    %>
    			</select>
    <%		
    		end if
    		
    	rs.close
    	set rs = nothing
    
    
    	if idRegione > 0 then
    		
    		sql = "SELECT * FROM tblProvincie WHERE idRegione = " & idRegione & " ORDER BY provincia"
    		set rs = conn.execute(sql)
    		
    			if not rs.eof then
    %>
    			<select name="idProvincia" onchange="document.location.href='<%=questaPagina%>?idRegione=<%=idRegione%>&amp;idProvincia='+this.value;">
    				<option value="">SELEZIONA</option>
    <%
    				do until rs.eof
    %>
    				<option value="<%=rs("idProvincia")%>"<% if idProvincia = rs("idProvincia") then %> selected="selected"<% end if %>><%=rs("provincia")%></option>
    <%					
    					rs.moveNext
    				loop
    %>				
    			</select>
    <%				
    			end if
    		
    		rs.close
    		set rs = nothing
    		
    	end if
    	
    	if idProvincia > 0 then
    		
    		sql = "SELECT * FROM tblComuni WHERE idProvincia = " & idProvincia & " ORDER BY comune"
    		set rs = conn.execute(sql)
    		
    			if not rs.eof then
    %>
    			<select name="idComune" onchange="document.location.href='<%=questaPagina%>?idRegione=<%=idRegione%>&amp;idProvincia=<%=idProvincia%>&amp;idComune='+this.value;">
    				<option value="">SELEZIONA</option>
    <%
    				do until rs.eof
    %>
    				<option value="<%=rs("idComune")%>"<% if idComune = rs("idComune") then %> selected="selected"<% end if %>><%=rs("comune")%></option>
    <%					
    					rs.moveNext
    				loop
    %>				
    			</select>
    <%				
    			end if
    		
    		rs.close
    		set rs = nothing
    		
    	end if
    
    conn.close
    set conn = nothing
    %>
    </form>

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    395
    PERFETTO!!!! Grazie mille funziona alla grande +++++++++++++=

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.