Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Effettuare il filtro al menu dal radio scelto

    Buomgiorno,
    sono bloccata con questo pezzo di programma e non riesco a trovare una soluzione.
    Nella mia pagina asp ho 5 radiobutton che identificano ognuno la classe di una scuola :
    codice:
    <tr>
            <th bgcolor="#E7E7E7" style="border-style: none; border-width: medium; height: 1px; " valign="middle" colspan="2">
            <input type="radio" value="1" name="Classe" id="Prima" onclick="attiva('Prima')"></th>
            <th bgcolor="#E7E7E7" style="border-style: none; border-width: medium; height: 1px;" valign="middle">
            <input type="radio" value="2" name="Classe" id="Seconda" onclick="attiva('Seconda')"></th>
            <th bgcolor="#E7E7E7" style="border-style: none; border-width: medium; height: 1px;" valign="middle" colspan="2">
            <input type="radio" value="3" name="Classe" id="Terza" onclick="attiva('Terza')"></th>
            <th bgcolor="#E7E7E7" style="border-style: none; border-width: medium; height: 1px; width: 82px;" valign="middle">
            <input type="radio" value="4" name="Classe" id="Quarta" onclick="attiva('Quarta')" style="width: 20px"></th>
            <th width="86" bgcolor="#E7E7E7" style="border-style: none; border-width: medium; height: 1px;" valign="middle">
            <input type="radio" value="5" name="Classe" id="Quinta" onclick="attiva('Quinta')"></th>
        </tr>
    Ogni radio ha un identificativo e un onclick perch� sono collegati a altri radio che indicano le sezioni e che si abilitano alla scelta di uno di questi cinque.
    Poi ho un menu a tendina che dovrebbe visualizzare i nomi dei ragazzi in base alla scelta della classe del radio button.

    codice:
    <tr>
            <th align="left" bgcolor="#E7E7E7" height="1" style="border-style: none; border-width: medium" valign="middle" colspan="5">
            <font size="2" color="#000035">Alunni</font></th>
            <th align="left" bgcolor="#E7E7E7" height="1" style="border-style: none; border-width: medium" valign="top" colspan="4">
            <%
    call openDB()  
        mySQL="SELECT * FROM Scuola WHERE Classe=......... "
        set rs=conn.execute(mySQL)
    %>
            <select name="scelta" size="1" tabindex="1" style="width: 226px">
            <option>SCEGLI</option>
              <%
    do  until rs.eof
       Id        = rs("id")
       nome = rs("nome")
       cognome = rs("cognome")   
       %>
            <option value='<%response.write id%>'><%response.write nome%> <%response.write cognome%>
            </option>
    <%
       rs.movenext
    loop
    %>  
        </select>
        </th>
        </tr>
    Nel where devo mettere il filtro alla tabella che contiene tutti i nomi dei ragazzi basandomi sulla colonna Classe che contiene l'informazione della classe di ogni alunno.
    Il mio problema quindi � che non so come fare il filtro sul menu a tendina in base al radio scelto.
    Spero possiate aiutarmi.

  2. #2
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    588
    Vedo un uso alquanto bizzarro dei "radio"... usando onclick stai commettendo un errore di programmazione sui radio button... puoi cliccarli tutti e eseguire tutte le routine collegate ma il discorso è un altro non vedo la logica del problema oppure devi spiegare questo tipo di filtro che vuoi ottenere con parole piu semplici e chiare e non con codice parziale...
    esponi il problema e qualcuno puo' aiutarti a risolverlo...
    Vic53

  3. #3
    Ok, vediamo se riesco a spiegarmi meglio.
    Ho cinque radio button e un menu a tendina, in base al radio button selezionato devono cambiare automaticamente le informazioni del menu a tendina.
    Le informazioni del menu a tendina vengono prese da una tabella in un database.
    La tabella viene filtrata in base all'id del radio button selezionato.
    Spero di essermi spiegata meglio.

  4. #4
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    588
    Quote Originariamente inviata da ElyCucciola Visualizza il messaggio
    Ok, vediamo se riesco a spiegarmi meglio.
    Ho cinque radio button e un menu a tendina, in base al radio button selezionato devono cambiare automaticamente le informazioni del menu a tendina.
    Le informazioni del menu a tendina vengono prese da una tabella in un database.
    La tabella viene filtrata in base all'id del radio button selezionato.
    Spero di essermi spiegata meglio.
    Ti sei spiegata...
    Per fare quello che chiedi devi usare AJAX...
    quando clicchi cul 2ndo radio devi chiamare una routine sul server che faccia la query con il parametro per la seconda classe.... e cosi via per le altre classi. La routine sul server deve creare la select completa e alla risposta il client deve caricare il codice di risposta dal server nella select con l'istruzione "innerhtml"...
    Piu difficile a spiegarlo che a farlo se sei a digiuno di Ajax....posso aiutarti a scrivere il codice occorrente per il tuo problema.
    Vic53

  5. #5
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    588
    Quote Originariamente inviata da vic53 Visualizza il messaggio
    Ti sei spiegata...
    Per fare quello che chiedi devi usare AJAX...
    quando clicchi cul 2ndo radio devi chiamare una routine sul server che faccia la query con il parametro per la seconda classe.... e cosi via per le altre classi. La routine sul server deve creare la select completa e alla risposta il client deve caricare il codice di risposta dal server nella select con l'istruzione "innerhtml"...
    Piu difficile a spiegarlo che a farlo se sei a digiuno di Ajax....posso aiutarti a scrivere il codice occorrente per il tuo problema.
    Per aiutarti ti ho preparato due file che ho testato sul miio server...
    la tabella Scuola che ho usato per test è composta da
    id - numerico intero long
    classe - numerico long
    nome stringa
    cognome stringa
    il primo file l'ho chiamato menuClasse.asp ed è il seguente e utilizza una chiamata AJAX
    codice:
    <html>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>prima</title>
    <head>
    <script type="text/javascript">
    function Attiva(classe) {
    //alert(classe);
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function() {
                if (this.readyState == 4 && this.status == 200) {
                    document.getElementById("alunno").innerHTML = this.responseText;
                }
          };
           xmlhttp.open("GET", "getClasse.asp?q=" + classe, true);
           xmlhttp.send();
    }
    </script>
    <style> 
    .flex-container {
        display: -webkit-flex;
        display: flex;
        width: 100%;
        height: 50px;
        background-color: lightgrey;
        justify-content: space-between;
    }
    
    .flex-item {
        background-color: #66CCFF;
        width: 150px;
        height: 24px;
        margin: 10px;
        text-align:center;
        border: 2px solid;
        border-radius: 10px;
    }
    </style>
    </head>
    <body>
    
    <div class="flex-container">
      <div class="flex-item">prima&nbsp;<input type="radio" value="1" name="Classe"  onclick="Attiva(this.value)"></div>
      <div class="flex-item">seconda&nbsp;<input type="radio" value="2" name="Classe"  onclick="Attiva(this.value)"></div>
      <div class="flex-item">terza&nbsp;<input type="radio" value="3" name="Classe"  onclick="Attiva(this.value)"></div>  
      <div class="flex-item">quarta&nbsp;<input type="radio" value="4" name="Classe"  onclick="Attiva(this.value)"></div>
      <div class="flex-item">quinta&nbsp;<input type="radio" value="5" name="Classe"  onclick="Attiva(this.value)"></div>  
    </div>
    <table>
    <tr>
    <td>&nbsp;ALUNNI&nbsp;</td>
    <td><div id="alunno"></div>
    </td>
    </tr>
    </table>
    </body>
    </html>
    per quanto riguarda il subprogram sul server l'ho chiamatogetClasse.asp ed è il seguente

    codice:
    <%
    dim q, str,SQL,conn,RS,DB,CurrentProject,nome,cognome,idt 
    'imposta il db appropriato...
    DB="mdb-database/DB_test.mdb" 
    
    Set conn  = Server.CreateObject("ADODB.Connection") 
    Set RS = Server.CreateObject("ADODB.Recordset")
    'utilizzo il driver pe Access 2000/2003
    CurrentProject = "Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ="& Server.MapPath(DB)
    'Apro la connessione
    conn.Open CurrentProject
    '
    ' parametro classe selezionato da input radio via querystring
    '
    for i=1 to Request.QueryString("q").Count 
      q =  Request.QueryString("q")(i)
    next
    
    str="<select id=""alunno"" size=""1"" tabindex=""1"" style=""width: 300px""><option value="""">scelta</option>"
    '
    ' la variabile "str" verra caricata con il risultato della query
    '
    '
    ' la classe è identificata da un numero tipo 1, 2, 3, 4, 5
    ' per il tipo numerico. se la classe è identificata da "prima", "seconda"..."quinta
    ' devi sostituire con una variabile di tipo stringa racchiusa tra apice singolo
    SQL="select * from Scuola where Classe="&q
    RS.Open SQL, conn, 3, 3
    if not RS.EOF then
     do until RS.EOF
      idt=RS("id")
      nome=RS("nome")
      cognome=RS("cognome")
      ' implemento str
      str=str&"<option value="""&idt&""">"&nome&" "&cognome&"</option>"
     RS.movenext
     loop
    end if
    RS.Close
    conn.close
    'fine select
    str=str&"</select>"
    response.write(str)
    %>
    ora devi caricare i dati della tabella scuola e provare
    per quanto riguarda la grafica poi puoi fare quello che ti pare, io ho usato flexbox al posto di table per
    definire i radio button
    studiaci su e poi vedi se passi oltr il tuo intoppo...

    Ciao
    Vic53

  6. #6
    può andare studiandoci su devo solo adattarlo per inserirlo in una pagina unica. però ce un problema onClick è già stato usato negli input per chiamare una funzione che va a attivare altri input

  7. #7
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    588
    puoi usare onChange ? ....
    ciao
    Vic53

  8. #8
    Ah si è vero grazie... adesso però lo devo sistemare perche il codice che tu hai messo nella seconda pagina io devo averlo nella stessa pagina e più precisamente all'interno del secondo pezzo di codice che ho scritto all'inizio.
    Secondo te sarebbe possibile al posto della funzione attiva() fare una funzione che riceve l'id del radio selezionato e effettua il return di tale valore.
    Poi il valore return viene assegnato a una variabile prima della select, e tale variabile poi viene usata per filtrare la colonna della tabella nella select ( ti faccio l'esempio sotto ---> ).

    codice:
    <tr>
            <th align="left" bgcolor="#E7E7E7" height="1" style="border-style: none; border-width: medium" valign="middle" colspan="5">
            <font size="2" color="#000035">Alunni</font></th>
            <th align="left" bgcolor="#E7E7E7" height="1" style="border-style: none; border-width: medium" valign="top" colspan="4">
            <%
    call openDB() 
    ---->    ritorno=valore //valore ritornato dalla funzione
    ---->    mySQL="SELECT * FROM Scuola WHERE Classe=ritorno "   //filtro la colonna classe con il valore dell'id ricevuto dalla funzione
        set rs=conn.execute(mySQL)
    %>
            <select name="scelta" size="1" tabindex="1" style="width: 226px">
            <option>SCEGLI</option>
              <%
    do  until rs.eof
       Id        = rs("id")
       nome = rs("nome")
       cognome = rs("cognome")   
       %>
            <option value='<%response.write id%>'><%response.write nome%> <%response.write cognome%>
            </option>
    <%
       rs.movenext
    loop
    %>  
        </select>
        </th>
        </tr>
    Ultima modifica di ElyCucciola; 31-08-2017 a 11:13

  9. #9
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    588
    Quote Originariamente inviata da ElyCucciola Visualizza il messaggio
    Ah si è vero grazie... adesso però lo devo sistemare perche il codice che tu hai messo nella seconda pagina io devo averlo nella stessa pagina e più precisamente all'interno del secondo pezzo di codice che ho scritto all'inizio.
    Secondo te sarebbe possibile al posto della funzione attiva() fare una funzione che riceve l'id del radio selezionato e effettua il return di tale valore.
    Poi il valore return viene assegnato a una variabile prima della select, e tale variabile poi viene usata per filtrare la colonna della tabella nella select ( ti faccio l'esempio sotto ---> ).

    codice:
    <tr>
            <th align="left" bgcolor="#E7E7E7" height="1" style="border-style: none; border-width: medium" valign="middle" colspan="5">
            <font size="2" color="#000035">Alunni</font></th>
            <th align="left" bgcolor="#E7E7E7" height="1" style="border-style: none; border-width: medium" valign="top" colspan="4">
            <%
    call openDB() 
    ---->    ritorno=valore //valore ritornato dalla funzione
    ---->    mySQL="SELECT * FROM Scuola WHERE Classe=ritorno "   //filtro la colonna classe con il valore dell'id ricevuto dalla funzione
        set rs=conn.execute(mySQL)
    %>
            <select name="scelta" size="1" tabindex="1" style="width: 226px">
            <option>SCEGLI</option>
              <%
    do  until rs.eof
       Id        = rs("id")
       nome = rs("nome")
       cognome = rs("cognome")   
       %>
            <option value='<%response.write id%>'><%response.write nome%> <%response.write cognome%>
            </option>
    <%
       rs.movenext
    loop
    %>  
        </select>
        </th>
        </tr>

    Mi stai dicendo che vuoi mettere il codice della seconda pagina tutto insieme...
    Ma tu sai come funziona AJAX?
    non è possibile fare questo perche il primo file gira sul client e il secondo gira sul server....
    mi dispiace per te per questa illusione.... non credo che puoi fare come dici.

    Ciao
    Vic53

  10. #10
    si lo so come funziona ma pensavo che magari c'era un scappatoia per poterlo fare, facendolo cosi devo rivoluzionare tutta la pagina asp che ho fatto e ci perderei troppo tempo, preferisco trovare un'altra soluzione se riesco che vada bene con la pagina di codice che ho.

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.