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

    Due select dinamiche dipendenti

    premetto di aver gia' posto questo quesito sul forum ma le indicazioni fornitemi non sono riuscite a risolvere il mio problema.

    Devo utilizzare due select in modo ricorsivo, in modo che al variare della prima, il contenuto della seconda si popoli di conseguenza.

    La prima select contiene le marche (es. Fiat BMW Alfa Romeo..) mentre la seconda contiente i modelli riferiti a quella marca.

    Il database presenta la tabella marche con i campi marca e modello.

    Non ho problemi a popolare dinamicamente la prima select ma non riesco a popolare la seconda usando come filtro della query il contenuto della prima.

    A quanto ho capito occorre utilizzare l'evento onchange alla prima select ma non capisco come.

    Vi ringrazio di cuore per ogni utile indicazione.
    Luca

  2. #2
    Dai un'occhiata qua:

    http://forum.html.it/forum/search.ph...by=&sortorder=

    oppure chiedi nella sezione Scripting, visto che il tuo caso può essere gestito anche via JS.
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  3. #3
    fammi capire prima una cosa...
    tu hai due campi select e i valori di ogni campo vengono dati da due query, giusto? e la seconda query è in base a quello che scegli nel primo campo select, giusto?

  4. #4
    Utente di HTML.it L'avatar di lucalicc
    Registrato dal
    Sep 2002
    Messaggi
    6,926
    esatto....

    ho la prima select, che e' popolata da una query fissa, del tipo SELECT marca FROM marche
    e poi un ciclo per popolarmi la select con tutte le marche automobilistiche (fiat, ferrari, volvo ecc.)

    la seconda select e' popolata da una query dinamica il cui filtro e' il contentuto della prima select, cioe' se nella prima select ho scelto Fiat nella seconda mi dovranno comparire tutti i modelli della fiat ad esempio Punto, Bravo ecc. e dovrebbe essere del tipo SELECT modelli FROM marche WHERE marca = 'scelta della prima select'

    ho gia' fatto qualcosa di simile con una matrice bidimensionale in javascript che all'evento onchange della prima select ne legge il contenuto e carica nella seconda select il contenuto della matrice corrispondente, ma ora lo devo fare con una interrogazione dinamica al database vista la mole di dati che devono essere continuamente aggiornati.

    infinite grazie per l'aiuto...
    luca

  5. #5
    scusa,

    tu hai un form con due select

    metti nell'onChange della prima il submit col form che punta alla stessa pagina, così quando fai il refresh della pagina puoi mettere nella condizione della query che popola la seconda select una where ( ad es. where marca="fiat")

  6. #6
    Utente di HTML.it L'avatar di lucalicc
    Registrato dal
    Sep 2002
    Messaggi
    6,926
    Ho risolto, almeno parzialmente....
    Ho trovato il modo per popolare le due select in modo dinamico prendendo spunto da uno dei link che mi hanno segnalato nella prima risposta e incollo in fondo a questo msg la soluzione in modo che possa essere utile ad altri...

    E' rimasto solo un problema....ho dovuto togliere l'action del form in quanto ad ogni onchange della prima select mi mandava alla pagina indicata nell'action (ovviamente)....
    ora come faccio ad indicare la pagina a cui inviare i valori del campo form quando faccio click sul tasto submit (in genere la pagina di destinazione e' inserita nel campo action del tag form)
    garzie ancora...luca


    Ecco il codice che mi funziona....
    per utilizzare lo script cosi com'e' occorre una connessione con il nome connRicambi.asp, il database deve avere una tabella chiamata marche con due campi marca e modello.
    Inoltre devono esserci un campo Scelgi la marca uguale per marca e modelli per i valori iniziale (io almeno ho risolto cosii', non e' fine ma funziona

    __________________________________________________


    <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

    <%
    Dim rs_marca
    Dim rs_marca_numRows

    Set rs_marca = Server.CreateObject("ADODB.Recordset")
    rs_marca.ActiveConnection = MM_connRicambi_STRING
    rs_marca.Source = "SELECT DISTINCT marca FROM marche ORDER BY marca ASC"
    rs_marca.CursorType = 0
    rs_marca.CursorLocation = 2
    rs_marca.LockType = 1
    rs_marca.Open()

    rs_marca_numRows = 0
    %>
    <%
    Dim rs_modello__MMColParam
    rs_modello__MMColParam = "1"
    If (Request.Form("sel_marca") <> "") Then
    rs_modello__MMColParam = Request.Form("sel_marca")
    else
    rs_modello__MMColParam = "Scegli la marca"
    End If
    %>
    <%
    Dim rs_modello
    Dim rs_modello_numRows

    Set rs_modello = Server.CreateObject("ADODB.Recordset")
    rs_modello.ActiveConnection = MM_connRicambi_STRING
    rs_modello.Source = "SELECT * FROM marche WHERE marca = '" + Replace(rs_modello__MMColParam, "'", "''") + "' ORDER BY modello ASC"
    rs_modello.CursorType = 0
    rs_modello.CursorLocation = 2
    rs_modello.LockType = 1
    rs_modello.Open()

    rs_modello_numRows = 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=iso-8859-1" />
    <title>AUTOWEB</title>
    </head>

    <body>
    <form name="form1" id="form1" method="post" action="">



    <select name="sel_marca" id="sel_marca" onChange="this.form.submit()">
    <option value="Scegli la marca" selected>Scegli la marca</option>
    <%
    While (NOT rs_marca.EOF)
    %>
    <option value="<%=(rs_marca.Fields.Item("marca").Value)%>" <%If (Not isNull((rs_modello.Fields.Item("MARCA").Value))) Then If (CStr(rs_marca.Fields.Item("marca").Value) = CStr((rs_modello.Fields.Item("MARCA").Value))) Then Response.Write("SELECTED") : Response.Write("")%> ><%=(rs_marca.Fields.Item("marca").Value)%></option>
    <%
    rs_marca.MoveNext()
    Wend
    If (rs_marca.CursorType > 0) Then
    rs_marca.MoveFirst
    Else
    rs_marca.Requery
    End If
    %>
    </select>
    </p>
    <select name="sel_modello" id="sel_modello">

    <%
    While (NOT rs_modello.EOF)
    %>
    <option value="<%=(rs_modello.Fields.Item("modello").Value )%>"><%=(rs_modello.Fields.Item("modello").Value)% ></option>
    <%
    rs_modello.MoveNext()
    Wend
    If (rs_modello.CursorType > 0) Then
    rs_modello.MoveFirst
    Else
    rs_modello.Requery
    End If
    %>
    </select>

    </p>



    <input type="submit" name="Submit" value="Invia" />
    </p>
    </form>
    </body>
    </html>
    <%
    rs_marca.Close()
    Set rs_marca = Nothing
    %>
    <%
    rs_modello.Close()
    Set rs_modello = Nothing
    %>

  7. #7
    richiamati una funzione in javascript che a seconda dei parametri che gli passi ti setti l'action del form in un modo o nell'altro e poi faccia il submit

    per maggiori informazioni chiedi allo scripting, cmq non è dificcile da fare se conosci javascript

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.