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

    Aiuto per select dinamiche in asp

    Ciao a tutti,
    vi chiedo di darmi una mano per capire dove sbaglio nel compilare un banalissimo script per select dinamiche.

    Vengo al dunque:
    in una pagina inserimento ho inserito il javascript:
    <script type="text/javascript" language="javascript">
    //<![CDATA[
    url = "http://www.miosito/inserisci/";
    d = document;
    preloadText = "Generazione lista...";
    function caricaPagina(dbcomuni.asp,AHAH_regioni)
    {
    if (d.getElementById) {var x=(window.ActiveXObject)?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();}
    if (x)
    {
    d.getElementById(idLayer).innerHTML = preloadText;
    x.onreadystatechange = function()
    {
    if (x.readyState == 4 && x.status == 200)
    {
    el=d.getElementById(idLayer);el.innerHTML = x.responseText;
    }
    }
    x.open("GET", url + pagina, true);
    x.send(null);
    }
    }
    function checkForm()
    {
    var ilForm = d.forms[0];
    var err = true;
    var lReg = document.getElementById("ErrorRegioni");
    var lProv = document.getElementById("ErrorProvincie");
    var lCom = document.getElementById("ErrorComuni");
    lReg.style.display = "none";lProv.style.display= "none";lCom.style.display="none";
    if (ilForm.regioni.value == "")
    {
    lReg.style.display = "block";lReg.innerHTML = "E' necessario selezionare una regione";
    err = false;
    }
    if (ilForm.provincie.value == "")
    {
    lProv.style.display = "block";lProv.innerHTML= "E' necessario selezionare una provincia.";
    err = false;
    }
    if (ilForm.comuni.value == "")
    {
    lCom.style.display = "block";lCom.innerHTML= "E' necessario selezionare un comune.";
    err = false;
    }
    return err;
    }
    //]]>
    </script>

    Il seguente form:
    <form name="secondaprova" method="post">
    <div align="center">
    <fieldset style="text-align:center;width:500px">
    <div id="FormError"> </div>
    <table width="136%" border="0" cellpadding="0" cellspacing="0" style="width:100%;">
    <tr>
    <td style="text-align:right;width:20%;font-weight:bold;">Regioni</td>
    <td style="text-align:left;width:80%"><div id="AHAH_regioni">
    <select name="regioni" style="width:100%">
    <option value="">seleziona una regione</option>
    </select>
    </div></td>
    </tr>
    <tr>
    <td colspan="2" style="text-align:center"><div id="ErrorProvincie"> </div></td></tr>
    <tr>
    <td style="text-align:right;width:20%;font-weight:bold;">Provincie</td>
    <td style="text-align:left;width:80%"><div id="AHAH_provincie"><select name="provincie" style="width:100%"><option value="">seleziona una provincia</option></select></div></td>
    </tr>
    <tr><td colspan="2" style="text-align:center"><div id="ErrorComuni"> </div></td></tr>
    <tr>
    <td style="text-align:right;width:20%;font-weight:bold;">Comuni&nbsp</td>
    <td style="text-align:left;width:80%"><div id="AHAH_comuni"><select name="comuni" style="width:100%"><option value="">seleziona un comune</option></select></div></td>
    </tr>
    </table>
    </fieldset>
    </div>
    </form>

    Ho inserito nella directory principale la pagina dbcomuni.asp:

    <%
    value = replace(request("value")&"", "'", "&#39")
    fieldtype = request("type")
    set ds = new DinamicSelect
    ds.DataBase = "/mdb-database/comuni.mdb"
    if fieldtype = "regioni" then
    ' REGIONI
    ds.DefaultText = "seleziona una regione"
    ds.sql = "select distinct pr_regione from Tab_Provincia"
    ds.SelectValue = "pr_regione"
    ds.SelectText = "pr_regione"
    ds.evento = " onchange=""caricaPagina('dbcomuni.asp?type=provinc ie&amp;value=' " &_
    "+ this.options[this.options.selectedIndex].value,'AHAH_provincie');"""
    ds.NomeCampo = "regioni"
    end if
    ' PROVINCIE
    if fieldtype = "provincie" then
    ds.DefaultText = "seleziona una provincia"
    ds.sql = "select * from Tab_Provincia where pr_regione='"& value&"'"
    ds.selected = value
    ds.SelectValue = "pr_sigla"
    ds.SelectText = "pr_desc"
    ds.evento = " onchange=""caricaPagina('dbcomuni.asp?type=comuni& amp;value='+ " &_
    "this.options[this.options.selectedIndex].value,'AHAH_comuni');"""
    ds.NomeCampo = "provincie"
    end if
    'COMUNI
    if fieldtype = "comuni" then
    ds.DefaultText = "seleziona un comune"
    ds.sql = "select loc_desc, loc_prov from Tab_Localita where loc_prov = '"&value&"'"
    ds.selected = value
    ds.SelectValue = "loc_desc"
    ds.SelectText = "loc_desc"
    ds.evento = ""
    ds.NomeCampo = "comuni"
    end if
    Response.Write (ds.CreaDinamicSelect())
    set ds = nothing
    %>

    ed anche il file che includo: class_dinamic_select.asp
    <%
    Class DinamicSelect
    Public SelectText 'impostare il nome del campo del database che verrà visualizzato nella lista
    Public SelectValue 'impostare il nome del campo del database che verrà passato come valore della lista
    Public Selected 'impostare la voce che verrà visualizzata nella lista al caricamento di pagina
    Public DataBase 'impostare l'url del database
    Public sql 'impostare la query per estrarre i dati
    Public Evento 'impostare l'evento che provvederà al submit "parziale" del form
    Public NomeCampo 'impostare il nome del campo (nell'ambito del form)
    Public DefaultText
    Public Function CreaDinamicSelect()
    'creazione e apertura della connessioneù
    tmpString = ""
    Set conn = Server.createobject("adodb.connection")
    connstr = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" &_
    Server.MapPath("/mdb-database/comuni.mdb")
    conn.open connstr
    tmpString = tmpString & "<select style=""width:100%"" name=""" & me.NomeCampo & """" & me.Evento & """>" & vbcrlf
    tmpString = tmpString & "<option value="""">" & Me.DefaultText & "</option>" & vbcrlf
    'creazione del recordset
    set rs = Server.Createobject("adodb.recordset")
    'apertura del recordset
    rs.open me.sql,conn,3,3
    do until rs.eof
    tmpString = tmpString & "<option value=""" & Trim(rs(me.SelectValue)) & """"
    if rs(me.SelectValue) = me.selected then
    tmpString = tmpString & "selected = ""selected"""
    end if
    tmpString = tmpString & ">" & Trim(UCase(rs(me.SelectText))) & "</option>" & vbcrlf
    rs.movenext
    loop
    tmpString = tmpString &"</select>"& vbcrlf
    'chiusura e distruzione del recordset
    rs.close
    set rs = nothing
    'chiusura e distruzione della connessione
    conn.close
    set conn = nothing
    CreaDinamicSelect = tmpString
    End function
    End Class
    %>

    Vi prego help, se non capisco non mi mandano in ferie!!!
    Leftist

  2. #2
    Ciao,

    ci sono impazzito anch'io all'inizio, ma adesso funzionano benissimo.

    spero di aiutarti, ti posto parte del codice che uso io spiegandoti alcune cose a cosa servono, considera che io le select dinamiche in questo caso le uso per selezionare una SuperCategoria di prodotti, scelta questa ho l'elenco delle Categorie relative alla S Categoria scelta ed infine i prodotti appartenenti alla SCategoria ed alla Categoria.

    ho creato 2 pagine: pro_cerca.asp (dove visualizzo le select) e pro_cerca_db.asp dove va tutto il codice che gestisce le select

    file pro_cerca.asp
    Codice PHP:
    <%@ Language=VBScript %>
    <% 
    Session.LCID 1040 %>
    <% 
    Response.Buffer True %>

    <
    html>

    <
    head>
        <
    meta http-equiv="content-type" content="text/html; charset=UTF8" />
        <
    title>Cerca prodotto.</title>
        <
    script type="text/javascript" language="javascript">
            
    //<![CDATA[
            
    url            "";
            
    d            document;
            
    preloadText "Generazione lista...";
            function 
    caricaPagina(pagina,idLayer
            {
                if (
    d.getElementById) {var x=(window.ActiveXObject)?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();}
                if (
    x
                {
                    
    d.getElementById(idLayer).innerHTML preloadText;
                    
    x.onreadystatechange = function() 
                                           {
                                             if (
    x.readyState == && x.status == 200
                                             {
                                                
    el=d.getElementById(idLayer);el.innerHTML x.responseText;
                                             }
                                           }
                    
    x.open("GET"paginatrue);
                    
    x.send(null);
                }
            }
            
    //]]>
        
    </script>
    </head>

    <body onload="caricaPagina([COLOR=red]'pro_cerca_db.asp?type=scategorie','Scategorie'[/COLOR] );">
    [COLOR=green]<!-- 
    all'apertura della pagina il tag BODY richiama la funzione CaricaPagina() che appunto carica il file pro_cerca_db.asp passandogli 2 valori:
    il primo (type=scategorie) è quello che sceglie il fieldtype
    il secondo (Scategorie) è l'id del div che contiene la select delle scategorie
    tu invece hai messo tutto nel javascript: [I]function caricaPagina(dbcomuni.asp,AHAH_regioni)[/I] e non riesci più a cambiare i valori
    -->[/COLOR] 

       <form method="post" action=".........
          <div id="Scategorie"><select name="id_scategoria" style="width:400px;"><option value=""></option></select></div>
          

          <div id="Categorie"><select name="id_categoria" style="width:400px;"><option value=""></option></select></div>
          

          <div id="Prodotti"><select name="pro_id" style="width:400px;"><option value=""></option></select></div>
       </form> 
    file pro_cerca_db.asp
    Codice PHP:

    <%
    value                         replace(request("value")&"""'""&#39")
    fieldtype                     request("type")
    set ds                        = new DinamicSelect
    ds
    .DataBase                 CartellaDatabase NomeDatabase

    ' S categorie
    if fieldtype = "scategorie" then 
        ds.DefaultText            = "Seleziona una S categoria"
        ds.sql                     = " SELECT * FROM scategorie ORDER BY scat_nome "
        ds.SelectValue             = "id_scategoria"    '    
    campo che viene passato alla query del fieldtype successivo (categorie)
        
    ds.SelectText             "scat_nome"        '    campo visualizzato nella <option> della select    
        ds.evento                 = " onchange=""caricaPagina('
    pro_cerca_db.asp?type=categorie&amp;value=' " &_ 
                                  "+ this.options[this.options.selectedIndex].value,'
    Categorie');"""    '    Categorie è l'id del prossimo div
        ds.NomeCampo            = "id_scategoria"    '    
    nome del campo
    end 
    if 

    ' categorie
    if fieldtype = "categorie" then 
        ds.DefaultText            = "Seleziona una categoria"
        ds.sql                     = " SELECT * FROM categorie WHERE id_scategoria ="& Clng(value) &" ORDER BY cat_nome "
        ds.selected             = value
        ds.SelectValue             = "contatore"
        ds.SelectText            = "cat_nome"
        ds.evento                 = " onchange=""caricaPagina('
    pro_cerca_db.asp?type=prodotti&amp;value=' " &_ 
                                  "+ this.options[this.options.selectedIndex].value,'
    Prodotti');"""
        ds.NomeCampo             = "contatore"
    end if 

    '    
    prodotti
    if fieldtype "prodotti" then 
        SQLcerca 
    " SELECT id_scategoria, id_categoria FROM categorie WHERE contatore = "Clng(value)
        
    Set RScerca Conn.Execute(SQLcerca)
            
        
    ds.DefaultText            "seleziona un prodotto"
        
    ds.sql                     "SELECT pro_id, pro_nome FROM prodotti WHERE " _
                                    
    " pro_cancellato = 0  " _
                                    
    " AND pro_scat = "RScerca("id_scategoria") &"  " _
                                    
    " AND pro_cat = "RScerca("id_categoria") &"  " _
                                    
    " ORDER BY pro_nome "
        
    ds.selected             value
        ds
    .SelectValue             "pro_id"
        
    ds.SelectText             "pro_nome"
        
    ds.evento                 ""
        
    ds.NomeCampo             "pro_id"
    end if 

    Response.Write                (ds.CreaDinamicSelect())
    set ds                        nothing
    %> 
    spero ti sia più chiaro così il funzionamento.

    fulvio

  3. #3
    non so' se risolve il problema a leftist

    ma a me si, proprio pochi minuti fà ho iniziato un form di registrazione utenti dove a partire dalla regione si deve arrivare al comune, via select.

    quando si dice la fortuna


    ciauzz
    Non ho paura dei miei pensieri, ma ho paura ad esprimerli.
    La libertà d'espressione oggi, potrebbe diventare prigionia del corpo domani.

  4. #4

    Funziona

    Grazie funziona alla grande!!!!
    Leftist

  5. #5

    Re: Funziona

    Originariamente inviato da leftist
    Grazie 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.