Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Conservare i dati nei form da pagina a pagina

Realizzare con Dreamweaver MX un form multipagina con passaggio dei parametri
Realizzare con Dreamweaver MX un form multipagina con passaggio dei parametri
Link copiato negli appunti

Questo articolo spiega una semplice procedura per realizzare un form multi-pagina con passaggio dei dati usando Dreamweaver MX o Ultradev 4 e la tecnologia ASP. È consigliabile la lettura della lezione «Registrazione di un nuovo utente: parte I» della Guida a Ultradev.

Lo scenario dell'applicazione è il seguente. Abbiamo un grossa quantità di informazioni da raccogliere da un utente (un sondaggio, un'intervista, una registrazione molto dettagliata). Decidiamo che non è opportuno dargli in pasto un lunghissimo modulo in una pagina singola: le buone norme dell'usabilità (e del buon senso) ci suggeriscono che è necessario suddividere il form in più pagine. Il problema è come rendere persistenti i dati nel passaggio da una pagina all'altra. Fino all'ultima, ovviamente, quando essi dovranno essere disponibili per l'inserimento nel nostro db.

La procedura è tutto sommato semplice sul piano concettuale, anche se per form molto lunghi può diventare un po' noiosa. Si tratta alla fine di piazzare i valori dei campi in un qualunque oggetto di ASP che consente la persistenza dei dati: variabili di sessione, cookies, l'oggetto Request, ecc. Il nostro approccio si basa proprio su quest'ultima soluzione. Per non perderci in inutili discorsi sul meglio e sul peggio, passiamo subito alla pratica. Esiste per gli articoli di quest sezione un'ottima opzione di commento: usatela, tutti i suggerimenti saranno ben accetti.

Per l'occasione abbiamo preparato una piccola applicazione di esempio, semplice e magari poco realistica, ma serve bene a spiegare come funziona. Potete testarla online (clicca per visualizzare l'esempio) o scaricarla per provarla sul vostro PC. Il file zip allegato contiene un testo di istruzioni che vi guiderà nel semplicissimo processo di configurazione.

L'obiettivo che ci poniamo è quello di riempire una tabella (tabUtenti) del database "utenti.mdb". La figura 1 mostra lo schema in Visualizzazione Struttura e i nomi dei campi:

Figura 1 - Schema tabella tab_utenti

Si tratta, come si vede, di 8 campi. La nostra applicazione sarà basata su due pagine, ciascuna contenente un form con 4 campi di testo. Sulla prima (default.asp) piazzeremo i campi per inserire Nome, Cognome, Indirizzo, CAP. Sulla seconda quelli per Città, Provincia, Telefono, Email.

Sempre sulla seconda, ed è qui il punto cruciale, metteremo anche 4 campi nascosti i cui valori saranno passati, tramite l'oggetto Request, dai quattro della prima pagina. Converrà per non perdersi tra i campi, dare nomi significativi e preceduti da un suffisso che ne indichi la tipologia (txtNome indicherà un campo di testo, hidNome un campo nascosto).

Lo schema mostrato in figura 2 dovrebbe essere abbastanza chiaro. Come si vede l'oggetto
Request è una specie di vettore dei dati tra le due pagine. Volendo complicare
la situazione e per mostrare uno scenario un po' più complesso,
allego anche un secondo schema, che mostra come agire se le pagine sono, ad esempio, 4. Il meccanismo non cambia.

Le due pagine ASP

La prima (default.asp) è davvero semplice. Il cuore di tutto è un form con quattro campi di testo e un pulsante di invio:

<form action="pagina2.asp" method="post" name="formregis"
id="formregis">
<p>Nome: <input name="txtNome"
type="text" id="txtNome"></p>
<p>Cognome:
<input name="txtCognome" type="text" id="txtCognome"></p>

<p>Indirizzo: <input name="txtIndirizzo" type="text"
id="txtIndirizzo"></p>
<p>CAP: <input name="txtCap"
type="text" id="txtCap"></p>
<p>
<input type="submit" name="Submit" value="Invia"></p>

</form>

Le cose da osservare sono due. Ricordate (al limite annotateli) i nomi dei campi di testo, perchè vi serviranno dopo. E inoltre, assegnate come valore dell'attributo action del form l'URL della pagina seguente.

La seconda pagina è un po' più complicata. Si parte comunque dalla realizzazione di un form. Esso conterrà 4 normali campi di testo:

<form name="form1" method="POST" action="">

<p>Città: <input name="txtCittà"
type="text" id="txtCittà"></p>

<p> Provincia: <input name="txtProvincia" type="text"
id="txtProvincia"></p>
<p>Telefono: <input
name="txtTelefono;" type="text"></p>
<p>Email:
<input name="txtEmail" type="text"></p>

E subito dopo 4 campi nascosti:

<p>
<input type="hidden" name="hidNome"
value="<%= Request("txtNome") %>">
<input
type="hidden" name="hidCognome" value="<%= Request("txtCognome")
%>">
<input type="hidden" name="hidIndirizzo"
value="<%= Request("txtIndirizzo") %>">

<input type="hidden" name="hidCap" value="<%=
Request("txtCap") %>">
<input type="submit"
name="Submit" value="Invia">
</p>

Qui la cosa da osservare è il valore dell'attributo value: attenti alla sintassi, perchè dovrete scrivere tutto a mano. Il valore del campo nascosto va sempre settato secondo questo schema:

<%= Request("campo_di_provenienza")%>

Dove "campo_di_provenienza" è il nome del campo corrispondente a quel dato della pagina default.asp.

Server Behavior Insert Record

A questo punto si dovrà usare il Server Behavior Insert Record. Operazione preliminare è la creazione di una connessione. La procedura non è cambiata da Ultradev a MX, anche se è diverso il modo per accedere al pannello di creazione. Scegliete il vostro metodo preferito e create la connessione. Nell'esempio abbiamo usato una connessione DSNLess (Custom Connection String). Ecco per comodità il codice:

"Driver={Microsoft Access Driver (*.mdb)};DBQ=D:sititestaspmultiformutenti.mdb"

Ovviamente sostituite al path di esempio, sopra segnato in rosso, quello della cartella dove piazzerete il vostro DB.

Creata la connessione, dal menu dei Server Behavior scegliete Insert Record. Il pannello non risulterà nuovo a chi usa Ultradev. Le operazioni da compiere sono le solite:

  1. Selezionare la giusta connessione (Connection)
  2. Selezionare la tabella di inserimento (Insert into table)
  3. Definire una pagina di reindirizzamento (After Inserting, Go To)
  4. Stabilire da quale form acquisire i dati (Get Values From)
  5. Effettuare l'abbinamento tra i campi del form (Form Elements) e le colonne della tabella (Columns)

Attenzione soprattutto a quest'ultima operazione. Ricordate, ad esempio, che i dati di Nome, Cognome, Indirizzo, Cap sono contenuti nei campi nascosti. Ecco a cosa serve dare ai vari elementi nomi non ambigui e significativi.

Tutto fatto. Nell'esempio abbiamo creato una terza pagina di redirect (registrazione.asp). Ci abbiamo messo un recordset che recupera i valori appena inseriti. Giusto per far vedere che funziona. Alla prossima.

Ti consigliamo anche