[ASP] si può fare?

Discussione in 'Classic ASP' iniziata da dariov, 14 Gennaio 2019.

  1. dariov

    dariov Nuovo Utente

    Registrato:
    4 Marzo 2018
    Messaggi:
    17
    Mi Piace Ricevuti:
    1
    Punteggio:
    3
    Sesso:
    Maschio
    Ciao a tutti, vista la mia scarsa esperienza con la asp, prima di ingarbugliarmi in un tentativo che non porta a nessun risultato, chiedo se possibile fare la seguente cosa:

    Una pagina asp HTML contiene un menu a tendina e una tabella contenente dei valori.

    È possibile sulla stessa pagina In base alla selezione del menu a tendina filtrare la tabella, o bisogna passare a una seconda pagina Il risultato della selezione del menu stesso?

    Potete indicarmi qualche strada?

    Grazie
     
  2. dariov

    dariov Nuovo Utente

    Registrato:
    4 Marzo 2018
    Messaggi:
    17
    Mi Piace Ricevuti:
    1
    Punteggio:
    3
    Sesso:
    Maschio
    Nessuno mi sa dare un'indicazione?
     
  3. vic53

    vic53 Nuovo Utente

    Registrato:
    9 Febbraio 2019
    Messaggi:
    15
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Occupazione:
    in pensione ( ex sistemista Alitalia Servizi)
    Località:
    Fonte Nuova
    Home Page:
    1 caso
    Puoi fare una chiamata Ajax a un modulo ASP, passandogli i parametri via querystring e vedere il risultato nella risposta...
    2 caso
    Oppure puoi chiamare una seconda pagina via POST passandogli il parametro su un campo form hidden dopo averlo caricato con la selezione
    La pagina chiamata leggerà in request.form(nomecampo) il valore da usare...
    la tua pagina supponiamo ha un form di nome formname

    Facciamo un esempio:
    se chiami una altra pagina via post
    nella sezione head devi creare una funzione con ilparametro in ingresso via querystring
    Codice:
    function SelezionaPagina(selezione) {
      document.formname.action="programma.asp?parametro="+selezione;
      document.formname.submit();
      return true;
    }
    ...
    oppure
    
    via POST e basta dopo aver caricato il campo hidden
    
    function SelezionaPagina(selezione) {
      document.getElementById(campohidden).value=selezione;
      document.formname.action="programma.asp";
      document.formname.submit();
      return true;
    }
    
    Se invece usii AJAX la cosa è più complessa ma puoi rimanere nella stessa pagina dove esegui la richiesta ricaricando
    il blocco dove vuoi con la risposta del server opo l'esecuzione del modulo chiamato...

    Codice:
    
    datiform="?selezione="+selezione;
      var ans;
      var xhttp = new XMLHttpRequest();
      xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
         alert(this.responseText);
        }
      };
      xhttp.open("GET", "programmachiamato.asp?"+datiform, true);
      xhttp.send();
      }
    
    Spero che l'esempio ti possa aiutare a studiare e continuare..

    ciao

    [/code]



    usando un evento sul menu, avrai una funzione Javascript a cui passi il valore della riga menu selezionata.
    Nella funzionechiamata farai una chiamata ad Ajax per eseguire il modulo richiesto e avrai il risultato nella response.text
     
    Ultima modifica: 9 Febbraio 2019
  4. dariov

    dariov Nuovo Utente

    Registrato:
    4 Marzo 2018
    Messaggi:
    17
    Mi Piace Ricevuti:
    1
    Punteggio:
    3
    Sesso:
    Maschio
    ti ringrazio per la risposta ma non ci capisco nulla... sono due giorni che cerco di capire e trovare argomenti da guardare ma va di male in peggio.
    probabilmente è troppo complicato per le mie capacità
     
  5. vic53

    vic53 Nuovo Utente

    Registrato:
    9 Febbraio 2019
    Messaggi:
    15
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Occupazione:
    in pensione ( ex sistemista Alitalia Servizi)
    Località:
    Fonte Nuova
    Home Page:
    Non ti buttare giù, è piu semplice di quanto pensi...
    cerco un esempio semplice e te lo posto:
    una pagina con tre righe descrizione tipo menu che chiama pagine diverse
    passandogli i dati da usare nella pagina chiamata con POST
    pagina 1 file=Esempio1.asp
    Codice:
    <!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 content="it" http-equiv="Content-Language" />
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>Senza nome 1</title>
    <script type="text/javascript">
    function OpenPage(pagina){
        document.frmprova.action = pagina;
        document.frmprova.submit();
        return true;
    }
    </script>
    </head>
    
    <body>
    <form name="frmprova" id="frmprova" method="post" action="" >
    <p>PAGINA DI ESEMPIO CHE CHIAMA 3 PAGINE DIVERSE</p>
    <p>Esempio</p>
       <p>questi campi possono essere visti in POST dalle pagine chiamete</p>
       <p>campo 1 id="campo1" qui a lato il campo di testo <input type="text" id="campo1" name="campo1" value="11111" /></p>
       <p>campo 1 id="campo1" qui a lato il campo di testo <input type="text" id="campo2" name="campo2" value="22222" /></p>
       <p>campo 1 id="campo1" qui a lato il campo di testo <input type="text" id="campo3" name="campo3" value="33333" /></p>   
       <p>&nbsp;</p>
    <p style="cursor:pointer;" title="seleziona pagina 1.1"><a onclick="OpenPage('Esempio1_1.asp')">1. PAGINA ESEMPIO 1.1</a> </p>
    <p style="cursor:pointer;" title="seleziona pagina 1.2"><a onclick="OpenPage('Esempio1_2.asp')">2. PAGINA ESEMPIO 1.2</a></p>
    <p style="cursor:pointer;" title="seleziona pagina 1.3"><a onclick="OpenPage('Esempio1_3.asp')">3. PAGINA ESEMPIO 1.3</a></p>
    </form>
    </body>
    </html>
    
    ora le 3 pagine da chiamare
    Esempio1_1.asp
    Codice:
    <%
    Dim campo1,campo2,campo3
    for i=1 to Request.Form("campo1").Count
      campo1 =  Request.Form("campo1")(i)
    next
    for i=1 to Request.Form("campo2").Count
      campo2 =  Request.Form("campo2")(i)
    next
    for i=1 to Request.Form("campo3").Count
      campo3 =  Request.Form("campo3")(i)
    next
    
    %>
    <!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 content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>Esempio</title>
    </head>
    
    <body>
    PAGINA 1
    PROVA ricezione valori da pagina iniziale via POST
    <%
    response.write("<br>il campo1 vale="&campo1)
    response.write("<br>il campo2 vale="&campo2)
    response.write("<br>il campo3 vale="&campo3)
    %>
    </body>
    </html>
    
    pagina 2
    Esempio1_2.asp
    Codice:
    <%
    Dim campo1,campo2,campo3
    for i=1 to Request.Form("campo1").Count
      campo1 =  Request.Form("campo1")(i)
    next
    for i=1 to Request.Form("campo2").Count
      campo2 =  Request.Form("campo2")(i)
    next
    for i=1 to Request.Form("campo3").Count
      campo3 =  Request.Form("campo3")(i)
    next
    
    %>
    <!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 content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>Esempio</title>
    </head>
    
    <body>
    PAGINA 2
    PROVA ricezione valori da pagina iniziale via POST
    <%
    response.write("<br>il campo1 vale="&campo1)
    response.write("<br>il campo2 vale="&campo2)
    response.write("<br>il campo3 vale="&campo3)
    %>
    </body>
    </html>
    
    pagina n.3
    Codice:
    <%
    Dim campo1,campo2,campo3
    for i=1 to Request.Form("campo1").Count
      campo1 =  Request.Form("campo1")(i)
    next
    for i=1 to Request.Form("campo2").Count
      campo2 =  Request.Form("campo2")(i)
    next
    for i=1 to Request.Form("campo3").Count
      campo3 =  Request.Form("campo3")(i)
    next
    
    %>
    <!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 content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>Esempio</title>
    </head>
    
    <body>
    PAGINA 3
    PROVA ricezione valori da pagina iniziale via POST
    <%
    response.write("<br>il campo1 vale="&campo1)
    response.write("<br>il campo2 vale="&campo2)
    response.write("<br>il campo3 vale="&campo3)
    %>
    </body>
    
    salva le 4 pagine con i nomi indicati e provale su un server ASP naturalmente
    Spero ti possa essere utile per farepratica
     
  6. dariov

    dariov Nuovo Utente

    Registrato:
    4 Marzo 2018
    Messaggi:
    17
    Mi Piace Ricevuti:
    1
    Punteggio:
    3
    Sesso:
    Maschio
    Ti ringrazio degli esempi, finalmente una cosa comprensibile:D

    ho modificato un pò e sono arrivato a utilizzare le select invece dei campi text e funziona con due select :D:D e il link per spostarsi in una nuova pagina (ho spostato lo script in un file "gare.js")

    però avrei bisogno se possibile di avere una terza select popolata in base alla scelta della seconda sulla stessa pagina, quindi non dovere usare il link per richiamare una nuova pagina, ma filtrare i valori al cambiamento della seconda select.
    ho provato a sperimentare un pò ma senza risultati
     
  7. dariov

    dariov Nuovo Utente

    Registrato:
    4 Marzo 2018
    Messaggi:
    17
    Mi Piace Ricevuti:
    1
    Punteggio:
    3
    Sesso:
    Maschio
    ti allego il codice da me modificato

    esempo3.asp
    Codice:
    <%@LANGUAGE = VBScript%>
    <!--#include file="config.asp"-->
    <%
        'Call CnClose()
        Call CnOpen()
    %>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta content="it" http-equiv="Content-Language" />
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
        <title>pagina principale</title>
      
        <script type="text/javascript" src="gare.js"></script>
      
      
    </head>
    
    <body>
        <%dim atleta %>
        <form name="frmprova" id="frmprova" method="post" action="" >
            <p>PAGINA DI ESEMPIO CHE CHIAMA 1 PAGINA DIVERSA</p>
            <p>Esempio</p>
          
            <p>&nbsp;</p>
          
        <select name="atleta">
            <option value="0"></option>
            <%
            Dim SQL2
            SQL2 = "SELECT * FROM giocatori ORDER BY nome ASC"
            rs.Open SQL2, cn, 1
            While rs.EOF = False
                %>
                <option value="<%=rs("IDgioc")%>"><%=rs("nome")%></option>
                <%
                rs.MoveNext
            Wend
            rs.Close
          
            %>
            </select>
        <!-- </form> -->
      
        <br><br>
      
        <%dim gare %>
        <!-- <form name="frmgare" id="frmgare" method="post" action=""> -->
            <select name="gare"> <!-- onchange="Batterie(this.value)"> -->
            <option value="0"></option>
            <%
            Dim SQL
            SQL = "SELECT * FROM gare ORDER BY IDgara ASC"
            rs.Open SQL, cn, 1
            While rs.EOF = False
                %>
                <option value="<%=rs("IDgara")%>"><%=rs("dove")%></option>
                <%
                rs.MoveNext
            Wend
            rs.Close
            %>
        </select>
    </form> 
      
    
            <p style="cursor:pointer;" title="seleziona pagina 1.4"><a onclick="OpenPage('Esempio1_4.asp')">4. PAGINA ESEMPIO 1.4</a></p>
    </body>
    </html>
    pagina 1.4
    Codice:
    <%
    Dim atleta, gare
    
    for i=1 to Request.Form("atleta").Count
      atleta =  Request.Form("atleta")(i)
    next
    for i=1 to Request.Form("gare").Count
      gare =  Request.Form("gare")(i)
    next
    %>
    <!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 content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>Select</title>
    </head>
    
    <body>
    PAGINA 4
    PROVA ricezione valori da pagina iniziale via POST
    <%
    
    response.write("<br>l' atleta vale="&atleta)
    response.write("<br>la gara vale="&gare)
    %>
    </body>
     
    A Paolo69 piace questo elemento.
  8. vic53

    vic53 Nuovo Utente

    Registrato:
    9 Febbraio 2019
    Messaggi:
    15
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Occupazione:
    in pensione ( ex sistemista Alitalia Servizi)
    Località:
    Fonte Nuova
    Home Page:

    ************************* NOTA TECNICA
    Ciao vedo che stai facendo pratica ma naturalmente ti sei incappato nel problema più comune per chi inizia a
    programmare seriamente...
    Per popolare la seconda select in base alla seclta della prima l'unica strada percorribile a meno di non aver tutte le righe in memoria, di ACCEDERE A SERVER PER ESGUIRE UNA NUOVA QUERY IN BASE ALLA SCELTA DELLA PRIMA SELECT: QUESTO è POSSIBILE TRAMITE AJAX CHIAMANDO SUL SERVER UNA ROUTINE E PASSANDOGLI I PARAMETRI CORRETTI...
    Allora sei pronto per capire quello che ti darò come esempio?
    Quando selezioni la select nella prima select hai a disposizione l'evento onchang()....
    Questo deve chiamare una funzione javascript lato client passandogli il valore della option selezionata....
    Facciamo per esempio cha chiami la funzione in questo modo...
    ...onchange="SelezionaSelect1(this.value)"....
    ... e nella zona head relativa a <script... come ti faccio vedere
    avrai la funzione come ti posto io con una mia versione semplificata....
    la seconda select deve stare in un tag "div"
    Codice:
    <div id="Sel2">.....
    qui c'è la seconda select con i valori iniziali che saranno poi sostituiti
    da ajax
    </div>
    
    perche sarà ripiazzata da quello che ritornerà il server a fronte della scelta sulla prima select
    chiamando ajax e passandogli il parametro option della prima select
    Codice:
    <script type="text/javascript" >
    function SelezionaSelect1(opt) {
      var xhttp = new XMLHttpRequest();
    var ans ' sta per answer...
      xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
         ans=this.responseText;
         document.getElementById("Sel2").innerHTML= ans;
         }
      };
      xhttp.open("GET", "Selezione2.asp?opzione="+opt, true);
      xhttp.send();
    }
    
    Il problema è ora devi scrivere il sottoprogramma Selezione2.asp...
    naturalmente questo dele solo fare un response della seconda select completa....
    quindi
    ...
    il codice del sottoprogramma circa ... come hai fatto prima sopra...
    e deve avere il nome come nella chiamata ajax
    naturalmente se selezioni un atleta questo vuol dire che vuoi vedere le gare di questo atleta e ho corretto la query..
    ma questo lo devi vedere tu se no mi spieghi da zero cosa vuoi fare con le due select...

    Codice:
     <select name="gare"> <!-- onchange="Batterie(this.value)"> -->
            <option value="0"></option>
            <%
    dim opzione,atleta
    for i=1 to Request.Querystring("opzione").Count
       opzione=Request.Querystring("opzione")(i)
    next
    atleta=opzione
       cnOpen   ' apre il recordset
            Dim SQL
            SQL = "SELECT * FROM gare  where atleta='"&atleta&"'"
            rs.Open SQL, cn, 1
            While rs.EOF = False
                %>
                <option value="<%=rs("IDgara")%>"><%=rs("dove")%></option>
                <%
                rs.MoveNext
            Wend
            rs.Close
            %>
        </select>
    cnClose
    
    Pressappoco quiesto è il codice del modulo sul server che devi chiamare ...

    Naturalmente devi assemblare il tutto e testarlo.... elavorarci sopra

    Se ho tempo ti farò un esempio preciso ... se hai deifficltà rispondi pure sarò paziente ad aiutarti
    ...
    ciao
     
    Ultima modifica: 12 Febbraio 2019
  9. dariov

    dariov Nuovo Utente

    Registrato:
    4 Marzo 2018
    Messaggi:
    17
    Mi Piace Ricevuti:
    1
    Punteggio:
    3
    Sesso:
    Maschio
    Ciao, ho provato oggi a seguire i tuoi suggerimenti, ma senza risultato:(

    anzi mi sono scontrato con un'altro problema
    premetto che sto facendo questa prove in localhost
    quando ho provato a lanciare la pagina asp modificata, evidentemente male, il server locale rimane a pensare per qualche minuto e anche se lancio altre pagine rimane in attesa per un po'

    oggi parto in trasferta per 3 giorni, e non so quanto riuscirò a lavorarci

    ti aggiorno
     
  10. vic53

    vic53 Nuovo Utente

    Registrato:
    9 Febbraio 2019
    Messaggi:
    15
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Occupazione:
    in pensione ( ex sistemista Alitalia Servizi)
    Località:
    Fonte Nuova
    Home Page:
    Ok quando torni ti do una mano da zero a 100.... fino a far girare il tutto...ciao
     
Sto caricando...

Condividi questa Pagina