Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    8

    Form: filtrare la seconda Select in base alla prima

    Ciao a tutti.
    Il problema è forse banale visto che molti siti lo hanno risolto.
    Ho una pagina con un form e due select; vorrei che dopo la selezione dalla prima, nella seconda fossero presenti solo i valori unici presenti nei record selezionati dalla prima.
    Classico esempio: Prima select= Provincia, seconda select=tutti e solo i Comuni *di quella* provincia.
    I dati sono su un db a cui accedo senza problemi (=senza questa dipendenza riesco a recuperare i valori giusti).
    Il tutto lavora in ASP.
    Grazie

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    leggi qui da adattare x le tue esigenze.


    P.S. Ciao e benvenuto.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    8
    Grazie Andrea, ci provo, anche se non conoscendo PHP non so come adattarlo ad ASP.
    Anzi, l'ho guardato proprio ora... boh!...

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    8
    In realtà ho un codice JS che funziona quasi, nel senso che effettua correttamente la selezione sul secondo menu, ma perde quella sul primo nell'operazione di reload. (Credo che il problema sia nel JS, se invece pensate che possa essere nell'ASP, cambiamo forum.)
    Ecco il codice:

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
    <link rel="stylesheet" type="text/css" href="main.css" />
    <!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=utf-8" />
    <title></title>
    <script language=JavaScript>
    function reload(form){
    var val=form.Tipo.options[form.Tipo.options.selectedIndex].value;
    self.location='prova_chiedi.asp?Tipo=' + val;
    }
    </script>
    </head>
    <body>
    <%
    Dim conn_tipo
    Tipo=Request.QueryString("Tipo")
    Set conn_tipo = Server.CreateObject("ADODB.Connection")
    conn_tipo.Open "DB"
    Dim rs_tipo
    Set rs_tipo = Server.CreateObject("ADODB.Recordset")
    sql = "SELECT DISTINCT Tipo FROM Imm"
    rs_tipo.Open sql, conn_tipo
    %>

    <div align="center">Ricerca


    <table border="0" width="350" cellpadding="0" cellspacing="3" bgcolor="FF9933">
    <form action="mostra_MS9.asp" method="post">
    <input type="hidden" name="ciclo" value="inizio" />
    <tr align="left">
    <td>Tipo:</td>
    <td>Comune:</td>
    <td>Prezzo massimo:</td>
    </tr>
    <tr>
    <td align="left">
    <select name="Tipo" onchange='reload(this.form)'>
    <option value="Tutti">Tutti</option>
    <% while not rs_tipo.eof
    mytipo = rs_tipo("Tipo")
    %>
    <option value="<%=mytipo%>"><%=mytipo%></option>
    <%
    rs_tipo.movenext
    wend
    %>
    </select>
    <%
    Dim conn_com
    Set conn_com = Server.CreateObject("ADODB.Connection")
    conn_com.Open "DB"
    Dim rs_com
    Set rs_com = Server.CreateObject("ADODB.Recordset")
    sql = "SELECT DISTINCT Comune FROM Imm WHERE Tipo='" & Tipo &"'"
    rs_com.Open sql, conn_com
    %>
    </td>
    <td align="left"><select name="Comune">
    <option value="Tutti">Tutti</option>
    <% while not rs_com.eof
    mycomune = rs_com("Comune")
    %>
    <option value="<%=mycomune%>"><%=mycomune%></option>
    <%
    rs_com.movenext
    wend
    %>
    </select></td>
    <td align="left"><select name="prezzo_max">
    <option value="max">nessun limite</option>
    <option value="500000">fino a 500.000</option>
    <option value="350000">fino a 350.000</option>
    <option value="250000">fino a 250.000</option>
    <option value="150000">fino a 150.000</option>
    </select></td>
    <td align="center" bgcolor="#FFFFFF"><input type="submit" name="" /></td>
    </tr>
    </form>
    </table>
    </div>
    </body>
    </html>
    <%
    conn_tipo.Close
    Set conn_tipo=Nothing
    conn_com.Close
    Set conn_com=Nothing
    %>

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Cambia questo pezzo:
    Codice PHP:
    <% while not rs_tipo.eof
    mytipo 
    rs_tipo("Tipo")
    %>
    <
    option value="<%=mytipo%>"><%=mytipo%></option>
    <%
    rs_tipo.movenext
    wend
    %> 
    con questo:
    Codice PHP:
    <% while not rs_tipo.eof
    mytipo 
    rs_tipo("Tipo")
    if 
    Request("Tipo") <> "" Then
    %>
    <
    option value="<%=mytipo%>"><%=mytipo%></option>
    <%
    else
    %>
    <
    option value="<%=Request("Tipo")%>"><%=Request("Tipo")%></option>
    <%
    End if
    rs_tipo.movenext
    wend
    %> 
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    8
    Andrea ho capito cosa vuoi fare.
    Con quel codice però non carica più i valori nella prima Select.
    Inoltre Request() dovrebbe essere Request.QueryString().
    Ho fatto questa modifica:
    <% if Request.QueryString("Tipo") = "" Then
    while not rs_tipo.eof
    mytipo = rs_tipo("Tipo")
    %>
    <option value="<%=mytipo%>"><%=mytipo%></option>
    <%
    rs_tipo.movenext
    wend
    else
    %>
    <option value="<%=Request.QueryString("Tipo")%>"><%=Reques t.QueryString("Tipo")%></option>
    <%
    End if
    %>

    Non funziona ancora, cioè nella prima Select al reload ho il valore di default, però ora nella lista non ho più tutti i valori letti dal db, ma solo il default e quello che avevo selezionato prima del reload.
    Pian pianino...

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    8
    Il concetto è semplice.
    Potrei con una action ricaricare la pagina e saprei come fare a mantenere il valore della prima select.
    Solo che invece che la pagina, vorrei ricaricare solo il form sempre mantenendo il valore.
    Concettualmente non è difficile.

  8. #8
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Fai cosi
    Codice PHP:
    <% while not rs_tipo.eof
    mytipo 
    rs_tipo("Tipo")
    if 
    Request("Tipo") = mytipo Then sel "selected=""selected""
    %>
    <option value="
    <%=mytipo%>" <%=sel%>><%=mytipo%></option>
    <%
    rs_tipo.movenext
    wend
    %> 
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    8
    Ci siamo quasi:
    adesso la selezione è giusta, cioè i risultati della pagina successiva sono quelli filtrati in base alle due selezioni e la seconda Select mostra solo i record scelti dalla prima.
    C'è un problema di visualizzazione: nella prima Select viene mostrato un campo vuoto (e la seconda scorre sotto alla prima (??).

  10. #10
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    if Request("Tipo") = mytipo Then sel = "selected=""selected""" prova cosi mancava " nella if
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

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