• User

    passare valori tra le pagine

    ciao, ho una form che mi effettua dei calcoli ma essendosi arricchita di nuovi (troppi) elementi è diventata troppo lunga.
    vorrei poterla suddividere in tre parti ma ho il problema di passare i dati memorizzati da una pagina all'altra per il riepilogo finale che tipo di procedura devo usare?
    un saluto ed un grazie a tutti.
    :ciauz:


  • User Attivo

    Utilizza i campi hidden.

    Cioè la seconda pagina memorizza i dati inviati dalla prima in campi hidden che saranno a loro volta inviati alla terza insieme a quelli del nuovo form... e così via.

    Ciao.


  • User Attivo

    Buona la risposta di madai, potresti fare anche in altro modo, se il tuo problema è solo della lunghezza della pagina, ovvero creare dei tab suddividendo in questo modo la pagina 2/3 pezzi...

    ciao

    :ciauz:


  • User

    grazie per le risposte, la possibilità di suddividere le pagine in tab non la conosco, per i campi hidden che mi suggerivi tu, madai, ci ho già provato ma non riesco a passare i valori, puoi darmi un suggerimento sul codice da usare?
    grazie
    :arrabbiato: :arrabbiato: :arrabbiato:


  • Moderatore

    Cerca documentazione sulle "Variabili di Sessione in ASP"


  • Moderatore

    La soluzione più elegante è tramite l'utilizzo delle "Variabili di Sessione in ASP":

    
      if len(Request("Field1"))>0 then
        Session("Field1") = Request("Field1")
      end if
     ...
    
    

    Nelle pagine asp eseguite successivamente (contenenti form successivi), all'interno della stessa Sessione, puoi riutilizzare la variabile, ad esempio nella pagina che contiene il terzo form potrai scrivere qualcosa tipo:

    
      ...
       myRecordSet.Value("NameFiled1") = Cstr(Session("Field1"))
      ...
    
    

    attento ad utilizzare i corretti operatori di CAST (modifica del tipo di dato di una variabile), in questo caso ho usato Cstr che trasforma in stringa il valore contenuto nella var. di sessione.


  • User

    già provato. con questo script:

    pag1<html>
    <head>
    <title> pag. 1</title>
    </head>
    <body>
    <form name="form1" method="post">
    <input name="nome" type="text" >

    <input name="cognome" type="text" >
    <%
    Session("nome") = request.form("txt_nome")
    Session("cognome") = request.form("txt_cognome")
    %>
    [url="p2.asp"]Pagina successiva
    </form>
    </body>
    </html>

    e pag2
    <%
    dim nome: nome = session("nome")
    response.write nome
    dim cognome: cognome = session("cognome")
    response.write cognome
    %>
    <html>
    <head>
    <title> pag. 2</title>
    </head>
    <body>

    <input name="text1" type="text" >

    <input name="text2" type="text" >

    </body>
    </html>

    queste erano due pagine (due semplici caselle di testo) di prova per vedere se riuscivo ad usare le session...ma non fuzionano.
    dov'è l'errore?
    grazie*


  • Moderatore

    Il problema sta nella dichiarazione del primo form, manca l'opzione "action=nomefile.asp" che specifica quale pagina verrà eseguita quando il submit del form verrà lanciato.
    Il Form viene eseguito quando si clicca su un controllo che implementa l'evento onSubmit, per esempio un pulsante di tipo "submit" o una immagine (l'Hiperlink non implementa il submit del form in "Classic Asp"):

    
    <html>
    <head>
      <title> pag. 1</title>
      
    </head>
    <body>
    <form name="form1" method="post" ACTION="?">
    <input name="nome" type="text" >
    
    <input name="cognome" type="text" >
    <input type="submit" name="btn_go" value="Invia">
    </form>
    <%
    ' Se il form è stato già inviato....
    if len&#40;request.form&#40;"txt_nome"&#41;&#41;> 0 then
              Session&#40;"nome"&#41; = request.form&#40;"txt_nome"&#41;
              Session&#40;"cognome"&#41; = request.form&#40;"txt_cognome"&#41;
              response.write "[url='pag2.asp']Pagina successiva"
    end if
    %>
    </body>
    </html>
    
    

    Il valore "?" per l'opzione ACTION vuol dire che la pagina che gestirà il form è la stessa che lo contiene, in questo caso pag1.asp
    Altrimenti dovrai scrivere ACTION="nomepaginaseguente.asp"

    La pagina successiva:

    
    <html>
    <head>
      <title> pag. 2</title>
     
    </head>
    <body>
    
    <%
    dim nome
    nome = session&#40;"nome"&#41;
    dim cognome
    cognome = session&#40;"cognome"&#41;
    
    Response.write "Benvenuto " & nome & " " & cognome & "! "
    
    %>
    
    </body>
    </html>
    
    
    

    PS: Prima di postare intere pagine di codice ASP cerca di documentarti sul web e poi magari prova a fare solo la domanda specifica con magari poche riche di codice. Non cercare la "pappa pronta" perchè così non imparerai molto...

    :ciauz:


  • User

    ti ringrazio dal profondo dell'animo per la risposta, in realtà il compo form l'ho messo nella mia pagina .asp e non l'ho riportato per brevità: scusa errori da principiante, avevo seguito le procedure esatte indicate nei *numerosi *tutorials e libri che ho letto ma purtroppo c'ò in giro un sacco di gente che pretende di scrivere solo per se stessa e per la propria immagine dando per scontato tutto.
    NON VOGLIO APPARIRE ANTIPATICO, la tua risposta mi è preziosa solo che:

    PS: Prima di postare intere pagine di codice ASP cerca di documentarti sul web e poi magari prova a fare solo la domanda specifica con magari poche riche di codice. Non cercare la "pappa pronta" perchè così non imparerai molto...

    non sempre si cerca la "pappa pronta" ma, come ti dicevo in giro nei forum ci sono un sacco di "soloni" che partecipano solo per farti sentire un povero idiota perchè non sai applicare un oggetto asp o php, ecc. e la documentazione di riferimento non sempre è chiara e limpida e quindi occorre pratica e la pazienza e disponibilità di VOI che siete esperti e, magari avete frequentato un istituto tecnico specifico, io purtroppo ho fatto il liceo scientifico negli anni '70, (ed il pc era fantascienza) ho 50 anni, mi sono laureato in chimica a 23 anni ed in biologia a 25, ho insegnato per oltre 15 anni all'università e sono stanco di sentirmi un cazzone, ma se le mie capacità di divulgazione fossero state come quelle che girano su altri forum (motivo per cui sto bene qui, madai e tonyx mi hanno dato dato un grosso aiuto) nessuno dei miei studenti avrebbe superato mezzo esame.
    per molta gente che scrive qui il pc è poco più di un hobby e non sempre quando si ha famiglia e più di un lavoro da fare si ha troppo tempo da dedicare allo studio (mia attività prevalente per 12 ore al giorno).
    Perdona lo sfogo e fuori da ogni intento polemico ti ringrazio tantissimo volevo solo sottolineare che se volete dare una mano potete, molto spesso, omettere certi commenti perchè inficiano l'aiuto che date.
    con amicizia sincera, di nuovo grazie.


  • User Attivo

    Ciao zwack 🙂

    non te la prendere... capisco benissimo la frustrazione che si prova alle prime armi e ti assicuro che la comprendono tutti... perchè ci siamo passati tutti.

    Come vedi ti aiutiamo comunque ma è necessario comprendere l'etichetta di questo ambiente. Non si tratta di superbia, anzi! Personalmente aiuto il più possibile (non solo in questo forum) perchè sono stato aiutato molto. Purtroppo chi aiuta di solito non viene pagato quindi è probabile che stia in ufficio a svolgere un altro lavoro, di conseguenza il tempo è poco. Ecco perchè si prediligono domande brevi per risposte lampo, questo inoltre stimola la capacità di comprensione del problema da parte di chi pone la domanda.

    Abbiamo tanta voglia di dare una mano a te e agli altri perchè non smettiamo mai di riceverne... questo è il favoloso spirito della Rete 🙂

    PS: hai risolto il tuo problema?


  • Moderatore

    Scusami, non volevo assolutamente ferire la sensibilità di nessuno.
    In ogni caso, data la tua esperienza, concorderai con il fatto che è più costruttivo fornire/richiedere persorsi di studio e approfondimento.

    :ciauz:


  • User

    cari amici, (passatemi il termine ma oramai ho svelato le mie primavere e se non ci si sente amici del mondo intero è meglio levare il disturbo ) non intendevo sollevare polemica e men che meno avere le scuse di qualcuno (anche se in questo, caro paocavo, hai dimostrato di essere un GRANDE) ma solamente sottolineare il fatto che questo forum mi piace perchè qui ho trovato uno spirito che altrove o manca del tutto oppure si è perso, basta girare un pò per rendersene conto.
    caro madai è vero che questo è il "cuore" e lo scopo della rete ma anche il suo più grosso limite perchè ha creato dei "protagonisti" che forti di qualche scarsa nozione di italiano parlato (e figuriamoci scritto) e di intere notti passate sul Commodore 64 adesso possono prendersi qualche rivincita e la cosa triste è che ciò accade frequentemente su siti "altamente professionali" e di grosso nome.
    qui sto bene, e se ci fosse una sezione dedicata ad altri saperi, forse potrei essere anche io di aiuto mi sono avvicinato al mondo dell'informatica perchè con alcuni ex colleghi, aiuto studenti del sud del mondo (via web) a superare la cronica mancanza di scuole e strutture con le quali migliorarsi la vita nel loro paese e mi rallegro nel vedere VOI che avete conquistato questo sacrosanto diritto di sapere e lo condividete.
    vedete sto facendo il vecchio Solone anche io.
    Vi ringrazio entrambi tantissimo e spero di poter contraccambiare un giorno la vostra disponibilità.
    vi saluto con sincera amicizia.

    P.S. il problema caro madai non l'ho ancora risolto.

    P.S.2 - i vostri nick hanno incuriosito le mie figlie (23, 18 e 17 anni)


  • User Attivo

    prova così, copia/incolla i codici:

    pagina1.asp

    <html>
    <head>
    <title>pagina 1</title>

    </head>
    <body>
    <form name="form1" method="post" ACTION="pagina2.asp">
    <input name="txt_nome" type="text" id="txt_nome" >

    <input name="txt_cognome" type="text" id="txt_cognome" >
    <input type="submit" name="btn_go" value="Prosegui">
    </form>
    </body>
    </html>

    pagina2.asp

    <html>
    <head>
    <title>pagina 2</title>

    </head>
    <body>
    <%
    Session("nome") = request.form("txt_nome")
    Session("cognome") = request.form("txt_cognome")
    %>
    ora i valori dei campi txt_nome e txt_cognome sono stati memorizzati nelle relative variabili di sessione:

    valore di txt_nome: <%= Session("nome") %>

    valore di txt_nome: <%= Session("cognome") %>

    <form name="form1" method="post" ACTION="pagina3.asp">
    <input name="txt_indirizzo" type="text" >

    <input name="txt_citta" type="text" >
    <input type="submit" name="btn_go" value="Prosegui">
    </form>
    </body>
    </html>

    Come vedi nella pagina2.asp stampo a video i valori delle variabili di sessione per farti vedere che si sono riempite regolarmente. Nel tuo caso reale non dovrai farlo per forza. Una vola create tali variabili resteranno disponibili durante tutta la sessione di lavoro dell'utente, potrai quindi utilizzarle quando vuoi.

    Ti avvero che le variabili di sessione non funzionano se l'utente ha i cookies disabilitati.


  • User Attivo

    PS: il mio nick in realtà rappresenta delle iniziali

    PS2: figlie? arrivo :yuppi:

    😉


  • User

    comincio a sentirmi un caso disperato, ho adattato il tuo codice ad un form di prova (unica aggiunta la pag in .js che effettua i calcoli) riportandolo paro, paro...ho creato le text "A" "B" "C" e "D", A e B sono nella pagina1.asp e C e D nella pagina2.asp; dovrebbe accadere che se immetto dei valori numerici in Ae B e li passo alla pagina seguente, assegnando il valore a C in D dovrebbe apparire, al click, la somma di questi.
    invece invece non accade nulla e mi avverte che "A.value" è nullo o non è un oggetto.
    dove ho sbagliato ora?

    P.S. le figlie (ahimè) sono già impegnate ... non solo dallo studio.


  • Moderatore

    il problema credo che stia nel fatto che le variabili di sessione vengono in realtà valorizzate nella pagina eseguita "dopo" quella che contiene l'assegnamento Session("nome_variabile") = valore

    Pertanto se adotti il paradigma:

    Pag1.asp(form1) >> Pag2.asp (Session(request1)+form2) >> Pag3.asp(Session(request2)+form3)

    allora le variabili di sessione "usabili" sono solo quelle, richiamate in Pag3, e relative ai valori di Pag1.

    Per risolvere il tuo problema devi riutilizzare il codice che ho scritto nel mio precedente post in cui la pagina.asp "Action" di ogni form è essa stessa (individuata col "?") e poi passare dall'una alla successiva con un semplice link.
    In buona sostanza se vuoi utilizzare una variabile di sessione nel form successivo allora la devi valorizzare nella pagina precedente e NON nello stesso form successivo.

    🙂


  • User

    fatto , ma continua a non funzionare, ho azzerato tutto e preparato un form di prova per lavorare su porzioni di dati minime.
    ti ringrazio tantissimo per la pazienza e disponibilità, forse come ho già detto a madai "sono un caso disperato".
    ciao.


  • User Attivo

    Posta di nuovo il codice che stai utilizzando


  • Moderatore

    Salve, a tutti, per prima cosa complimenti a madai e paocavo, che come sempre sono di grandissimo aiuto a tutti i membri del forum, con i loro preziosi consigli.

    Io però riprenderei ciò che aveva scritto madai, suggerendoti i campi hidden, perchè come è stato già scritto le variabili di sessione dipendono dai cookie e se un 'utente ha i cookie disabilitati tutto il lavoro di riempimento del form è inutile, con conseguente scazzamento dell'utente.
    😄
    E credimi che se succedesse a me mi scazzerei parecchio 😄 😄 😄

    Ti posto un po' di codice per i campi hidden:

    Pagina1.asp

    
    <form method ="post" action="pagina2.asp">
     Nome  <input type="text" name="nome" id="nome"/>
     Cognome <input type="text" name="cognome" id="cognome"/>
    <input type="submit" value="invia"/>
    </form>
    
    

    Pagina2.asp

    
    <form method ="post" action="pagina3.asp">
     Indirizzo <input type="text" name="indirizzo" id="indirizzo"/>
     Città<input type="text" name="citta" id="citta"/>
    <input type="hidden" name="nome" id="nome" value="<%=Request.Form&#40;"nome"&#41;%>"/>
    <input type="hidden" name="cognome" id="cognome" value="<%=Request.Form&#40;"cognome"&#41;%>"/>
    <input type="submit" value="invia"/>
    </form>
    
    
    

    Così ti porti in giro tutti i valori senza appoggiarti alle variabili di sessione che conseguentemente si appoggiano ai cookie

    Nella pag 1 i valori sono nome, cognome
    Nella pag 2 i valori sono nome, cognome, indirizzo, citta

    Ciao :ciauz: :ciauz: ù

    Ps
    A settembre ho l'esame di chimica ad ingegneria, e ti premetto che sfrutterò le tue conoscenze 😄 😄 😄 😄 😄 😄 😄 😄
    Ciao


  • Moderatore

    @Legolas said:

    Salve, a tutti, per prima cosa complimenti a madai e paocavo, che come sempre sono di grandissimo aiuto a tutti i membri del forum, con i loro preziosi consigli.

    Grazieeee!

    :ciauz: