Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: Combo

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    34

    Combo

    Ma come si fa il refresh?

    Ho un form che contiene due combo (menu tendina) con i dati caricati da un db:
    1°combo che visualizza elenco clienti (Cod. e RagSoaciale)
    2°combo che visualizza elenco nr ordini.

    Io ho bisogno che, se viene selezionato un cliente, i dati visualizzati nella 2° combo vengano filtrati in base al cliente selezionato.

    uffa come faccio

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    667
    Prova questo se va bene:

    Ciao David

    <html>
    <head>
    <title>Documento senza titolo</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <script>
    var a aArray = new Array("('-------','',true,true)");
    var bArray = new Array("('Selezionare area terapeutica','',true,true)",
    "('AI')",
    "('CNS')",
    "('CV/AD')",
    "('PI')",
    "('TUTTE')",
    "('UE')");
    function populate(inForm,selected) {
    var selectedArray = eval(selected + "Array");
    while (selectedArray.length < inForm.area.options.length) {
    inForm.area.options[(inForm.area.options.length - 1)] = null;
    }
    for (var i=0; i < selectedArray.length; i++) {
    eval("inForm.area.options[i]=" + "new Option" + selectedArray[i]);
    }
    if (inForm.servizi.options[0].value == '') {
    inForm.servizi.options[0]= null;
    if ( navigator.appName == 'Netscape') {
    if (parseInt(navigator.appVersion) < 4) {
    window.history.go(0);
    }
    else {
    if (navigator.platform == 'Win32' || navigator.platform == 'Win16') {
    window.history.go(0);
    }
    }
    }
    }
    }

    </script>


    </head>

    <body>
    <form name="modulo">
    <select name="servizi" onChange="populate(document.modulo,document.modulo .servizi.options[document.modulo.servizi.selectedIndex].value)">
    <option selected value=''>Select Region</option>
    <option value='a a'>Asia</option>
    <option value='b'>Africa</option>
    <option value='b'>prova b</option>
    <option value='a'>Prova a</option>
    </select>
    <select name="area">
    <option value=''><---------- </option>
    </select>
    </form>

    </body>
    </html>

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    34
    Non riesco.

    Dal forum ASP Corinna mi ha postato il codice che indico qui sotto, ma conoscendo poco/niente di JS, non riesco ad adattarlo correttamente.

    Io vorrei però che le due combo fossero visualizzate entrambe all'apertura della pagina, mostrando con tutti i clienti nella 1° e tutti i nr ordine nella 2°,
    e che la 2° combo venisse aggiornata in base al valore inserita nella 1°...



    Qualcuno mi puo' spiegare cosa fa la funzione

    function jumpMenu(targ,selObj,restore){ //v3.0
    eval(targ+".location='"+selObj.options.value+"'");
    if (restore) selObj.selectedIndex=0;
    }

    e poi il campo id che viene passato alla pagina come parametro, è il campo value della select? e deve essere numerico?
    Perchè nel mio caso sarebbe un CodiceCliente alfanumerico....

    L'errore che mi da (su OnChange della 1° Combo) è file not found

    grazie a tutti





    <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>

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    34


    Vi prego....

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    667
    La funzione Jump menu serve per:

    al change del campo select ti porta al link es:

    <option value="http://www.google.it">Google</option>
    <option value="http://www.altavista.it">Altavista</option>
    ecc...
    ecc...
    Ma a quanto ho capito, a te non serve questo ma uno script simile a quello che ti ho postato all'inizio...

    Fammi vedere cmq....

    Aspetta in linea...

    Ciao David

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    34
    ok aspetto...
    grazie 1000

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    667
    Guarda, ho trovato questo scriptino, l'ho modificato un pochino per renderlo + semplice possibile.
    L'unica cosa che dovresti fare è, mi è sembrato di capire che usi ASP, non lo completo perchè utilizzo coldfusion e sarebbe diverso,ma dovresti lavorare con le liste.Questo è il codice:

    <script language="JavaScript">
    var option_array = new Array('');

    option_array[1] = new Array("-- Prima sel --","JavaScript Kit","News.com","Wired");
    option_array[2] = new Array("-- Seconda sel --","CNN","ABC News");
    option_array[3] = new Array("-- terza sel --","Google","Ask Jeeves");

    function switch_select()

    {
    for (loop = window.document.form_1.select_2.options.length-1; loop > 0; loop--)
    {
    window.document.form_1.select_2.options[loop] = null;
    }

    for (loop = 0; loop < option_array[window.document.form_1.select_1.selectedIndex].length; loop++)
    {
    window.document.form_1.select_2.options[loop] = new Option(option_array[window.document.form_1.select_1.selectedIndex][loop]);
    }

    window.document.form_1.select_2.selectedIndex = 0;
    }

    </script>

    <form name="form_1" onSubmit="return false;">
    <select name="select_1" onChange="switch_select()">
    <option>-- Categoria --</option>
    <option>Prima sel</option>
    <option>Seconda sel</option>
    <option>Terza sel</option>
    </select>
    <select name="select_2">
    <option>Selezionare sottocategoria</option>
    </select>
    </form>


    Dovresti inizialmente creare delle liste per rendere dinamiche le sottocategorie:

    da cosi:
    new Array("-- Prima sel --","JavaScript Kit","News.com","Wired");
    a:
    ("-- Prima sel --","<%lista uno%>")
    ecc..

    e poi fare un loop per questo. da cosi:

    option_array[1] = new Array("-- Prima sel --","JavaScript Kit","News.com","Wired");
    option_array[2] = new Array("-- Seconda sel --","CNN","ABC News");
    option_array[3] = new Array("-- terza sel --","Google","Ask Jeeves");

    a:
    <loop da 1 N_liste>

    option_array[<%Numero%>] = new Array("-- Prima sel --","<%lista uno%>")
    </loop>

    Spero di essere stato chiaro....

    Qualsiasi problema sono qui.

    Penso sia l'unico modo per renderlo dinamico.

    Ciao David

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    34
    ascolta, io recupero i dati da una tabella di un db con sql e mi creo quindi un (anzi due) recordset. Non posso usare i recordset per visualizzare le options? devo per forza mettere i valori in array?

    Perchè la prima parte (apertura pagina con le due combo e rispettivi dati) l'ho fatta in questo modo (qui sotto ho messo il codice) e funziona.
    La mia idea era quella che su onchange venisse ricaricata la pagina (e non so come fare) in modo che i dati della 2° select venissero filtrati...e infatti qui si inchioda ....
    Non so, forse sono fuori strada visto che i tuoi suggerimenti sono diversi...


    Grazie tante per la pazienza!

    CIAO

    ....
    <form name="Form_Selez" method="post" action="">
    .....


    .....
    function jumpMenu(targ,selObj,restore){ //v3.0

    eval(targ+".location='"+selObj.options.value+"'");
    if (restore) selObj.selectedIndex=0;
    }

    ......


    <%
    cn.open StrCon

    sql = "Select distinct Cod_client, Des_client"
    sql = sql & " FROM dw_ordacq"
    sql = sql & " WHERE Cod_client is not NULL "
    sql = sql & " ORDER BY Des_client"
    set v_rk = cn.execute(sql)
    if not v_rk.eof then
    %>
    <select name="Pf_Clienti" onChange="jumpMenu('parent',this,0)">
    <option value="-" selected></option>
    <%
    do until v_rk.eof
    %>
    <option value=="<%=v_rk("Cod_client")%>"> <%=v_rk("Cod_client").value%> - <%=v_rk("Des_client")%></option>
    <%
    v_rk.movenext
    loop
    end if
    %>
    </select>
    <%
    v_rk.close
    set v_rk = nothing

    'if id > 0 then

    sql = "Select distinct Num_ordven"
    sql = sql & " FROM dw_ordacq"



    if (Request.Form("Pf_Clienti") <> "-") and (Request.Form("Pf_Clienti") <> "") then
    sql = sql & " WHERE Cod_client is not NULL and Cod_client = '" & Request.Form("Pf_Clienti") & "'"
    else
    sql = sql & " WHERE Cod_client is not NULL "
    end if

    sql = sql & " ORDER BY Num_ordven"

    response.write sql
    set v_rk = cn.execute(sql)

    if not v_rk.eof then
    %>
    <select name="Pf_NrOrdine">
    <option value="<%=v_rk("Num_ordven")%>"></option>
    <%
    do until v_rk.eof %>
    <option value="<%=v_rk("Num_ordven")%>"><%=v_rk("Num_ordve n")%></option>
    <%
    v_rk.movenext
    loop
    end if
    %>
    </select>
    <%
    v_rk.close
    set v_rk = nothing
    'end if
    cn.close
    set cn = nothing
    %>

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    667
    Allora puoi fare,

    scusami ma premetto...non capisco un accidente di (penso sia PHP...speriamo di non fare figuracce) PHP però potresti fare:


    se questo è il codice che hai nella tua pag, penso ci sia qualche errorino:
    <option value== "<%=v_rk("Cod_client")%>"> <%=v_rk("Cod_client").value%> - <%=v_rk("Des_client")%></option>

    cmq potresti:


    creare una query che mi popoli la prima select dei clienti

    <select name="clienti" onChange="jumpMenu('parent',this,0)"
    <option value="pag.PHP?idcliente=variabile PHP con id_del_cliente">
    </select>
    quando ricarica la pagina, si fa un controllo se è definito idcliente
    se si allora facciamo la seconda query sulla tabella ordini
    where id_del_cliente=url.idcliente
    e questa query mi popolerà la select degli ordini.
    Purtroppo non posso farti un esempio perchè sviluppo con coldFusion ed è tutto diverso, le variabili come visualizzare le varibili ecc...ecc...
    Però la logica è quella.

    Spero di essere stato chiaro

    Ciao David

  10. #10
    basta fare all'onchange della combo che chiama la funzione

    ricarica(this.value)

    e crei la funzione

    function ricaricami(valore){
    location.href("pagina.asp?variabile="+ valore)
    }

    e nella select metti la variabile
    "variabile" nella where..
    ----------------------
    i rulez.-.dovrebbero mettere "pippo" come parola riservata in tutti i linguaggi

    The Cyberpunk System One
    http://www.geocities.com/notoleranceforyou/Hymagition.html

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.