Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    popolare una combobox da Db in javascript

    Salve a tutti, vorrei approfittare di questo splendido forum e delle persone che generosamente aiutano chi ha delle difficoltà.
    Ho visto un sito (questo è il link) http://auto.corriere.it/Automobili/index.shtml , se voi cliccate in basso a sinistra la combo che dice di selezionare la marca, una volta scelta la marca sembrerebbe che qualcosa in javascript vada a popolare la combo del modello senza ricaricare la pagina, quindi anche bello da vedersi.
    io cercando, ho trovato credo proprio sul forum questo codice che fa la stessa cosa, pero' con le combo gia' precompilate usando gli array.
    io avrei la necessità di far tutto cio' leggendo dal database, come dovrei fare?
    grazie a tutti e vi posto il codice che ho trovato.


    <html>
    <head>
    <title>Popolare SELECT da SELECT</title>
    <script type="text/javascript">
    //Dichiaro l'array myMenu'
    var myMenu = new Array();

    //Definisco le voci del menu'
    myMenu['cat_a'] = new Array(); //Prima categoria
    myMenu['cat_a']['value1'] = 'Prima opzione';
    myMenu['cat_a']['value2'] = 'Seconda opzione';
    myMenu['cat_a']['value3'] = 'Terza opzione';
    myMenu['cat_b'] = new Array(); //Seconda categoria
    myMenu['cat_b']['value4'] = 'Quarta opzione';
    myMenu['cat_b']['value5'] = 'Quinta opzione';
    myMenu['cat_b']['value6'] = 'Sesta opzione';
    myMenu['cat_c'] = new Array(); //Seconda categoria
    myMenu['cat_c']['value7'] = 'Settima opzione';
    myMenu['cat_c']['value8'] = 'Ottava opzione';
    myMenu['cat_c']['value9'] = 'Nona opzione';

    function popola_select(){
    var select = document.forms['myForm'].mySelect; //Recupero la SELECT
    var subselect = document.forms['myForm'].mySubSelect; //Recupero la seconda SELECT

    // Recupero la categoria selezionata
    var cat = select.options[select.selectedIndex].value;

    //Controllo che sia stata selezionata una categoria valida
    if(cat.length != 0){
    //Azzero il contenuto della seconda select
    for (var i = subselect.length - 1; i >= 0; i--)
    subselect.remove(i);

    //Popolo la seconda Select
    for(value in myMenu[cat]){
    //Creo il nuovo elemento OPTION da aggiungere nella seconda SELECT
    var NewOpt = document.createElement('option');
    NewOpt.value = value; // Imposto il valore
    NewOpt.text = myMenu[cat][value]; // Imposto il testo

    //Aggiungo l'elemento option
    try{
    subselect.add(NewOpt, null); //Metodo Standard, non funziona con IE
    }catch(e){
    subselect.add(NewOpt); // Funziona solo con IE
    }
    }

    }
    }
    </script>
    </head>
    <body>
    <form name="myForm" method="post" action="...">
    <select name="mySelect" onChange="popola_select()">
    <option value="">-> Seleziona una Categoria</option>
    <option value="cat_a">Prima Categoria</option>
    <option value="cat_b">Seconda Catgoria</option>
    <option value="cat_c">Terza Categoria</option>
    </select>




    <select name="mySubSelect"></select>
    </form>
    </body>
    </html>
    Pietro

  2. #2
    Ragazzo devi andare di AJAX!

    Puoi utilizzare un framework come Prototype per semplificarti la vita.

    Un'esempio può essere:

    Codice PHP:
    function updatecombo(parameter){
        new 
    Ajax.Request('pagina.php',{
                
    method:'get',
                
    parameters:$H({'marca':parameter}).toQueryString();
                
    onComplete:function(requester){
                        $(
    'idComboBox').innerHTML requester.responseText;
                    }
            });

    Dove la funzione updatecombo viene richiamata con il valore della prima combobox e pagina.php è la pagina PHP, per l'appunto, che ritorna dopo una query sul database i risultati per popolare la seconda combobox nel formato

    Codice PHP:
    <option value="xxx">xxx</option
    http://www.digitlife.it - Siti web in Friuli Venezia-Giulia.

  3. #3
    Intanto ti ringrazio per la risposta, volevo domandarti se ajax è abbinabile solo con php oppure anche con asp, ed inoltre è meglio asp oppure php.
    scusa per le troppe domande, ma è necessario per effettuare una scelta perche' se no sta funzione la faccio in flash.
    grazie
    Pietro

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Ajax lo puoi abbinare con qualsiasi cosa, anche con dei semplici files di testo se non hai necessita' di elaborare un parametro ma richiedi solo una risorsa.

    Sulla seconda domanda.... e' meglio usare quello che conosci... meglio
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  5. #5
    grazie molte, adesso vedro' un po' di cercare qualcosa in giro su ajax
    alla prox.
    Pietro

  6. #6
    Sono riuscito a mettere su cercando cercando, pero' vorrei capire come eseguire bene la seconda combobox.

    nella pagina default1.asp inserisco una combobox con marche di auto presi da database.
    vedete la parte di codice in default1.asp alert(response)? ecco questo mi fa apparire tutti i risultati in questo formato

    questa è la risposta che torna indietro nella variabile response in default1.asp quei numeri sono i modelli di auto relativi ad una marca.

    codice:
    <select name="select2" id="selec2t">
    <option>500</option>
    <option>600</option>
    <option>850</option>
    </select>

    Questa è la pagina default1.asp

    codice:
    <script src="lib/prototype.js" type="text/javascript"></script>
    <script src="src/scriptaculous.js" type="text/javascript"></script>
    
    <script type="text/javascript">
    
    function vedi(parameters){ 
    
    
    new Ajax.Request("pagina.asp", { method:"get", onSuccess: function(transport){         var response = transport.responseText          || "no response text";         alert(response); },     onFailure: function(){ alert("Something went wrong...") }   });
    
    }
    
    
    </script>
    
    
    
    
    
    
    <%
    call openDB
    varSQL = "SELECT * from marca"
    rs.Open varSQL, conn
    %>
    
    
    <select name="select" id="select" onchange="vedi()">
    <%do while not rs.eof%>
    <option><%=rs("marca")%></option>
    <%rs.movenext
    loop%>
    </select>
    questa è la pagina.asp (dove viene eseguita una query con un id predefinito)

    codice:
    <%
    call openDB
    varSQL = "SELECT * from modello where id=1"
    rs.Open varSQL, conn
    %>
    <select name="select2" id="selec2t">
    <%do while not rs.eof%>
    <option><%=rs("modello")%></option>
    <%rs.movenext
    loop%>
    </select>
    invece io vorrei che insieme alla prima combobox ci fosse la seconda che si popola automaticamente appena c'e' l'evento onchange

    spero di essere stato chiaro, grazie a tutti
    Pietro

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 © 2024 vBulletin Solutions, Inc. All rights reserved.