Il form in questo caso si usa per fare una di queste due cose:
1-permettere a un nuovo utente di registrarsi
2-permettere a un utente registrato di modificare i propri dati.
Spesso, per comodità e per risparmiare tempo, si usa lo stesso file .asp sia per aggiungere che per modificare, inserendo una condizione, che proviene dal link che chiama il form. Supponiamo che la pagina .asp che contiene il form si chiami register.asp. Allora:
<a href=register.asp?mode=add>nuovo utente</a>
<a href=register.asp?mode=edit>modifica i tuoi dati</a>
In questo secondo caso, si presuppone ovviamente che l'utente sia loggato, quindi la pagina register.asp possiede l'id dell'utente (in genere l'id viene memorizzato come variabile di sessione). A scanso di errori, se l'utente é loggato non deve apparire il primo link, se non c'è un utente loggato non deve apparire il secondo link.
Se c'è la variabile di sessione, il file riconosce che l'utente XXX si è loggato, e quindi ci troviamo in modalità modifica, altrimenti ci troviamo in modalità aggiungi.
Le due operazioni differiscono fin dall'inizio, perché in modalità modifica è necessario aprire il database per prelevare i dati dell'utente da mostrare nelle caselle di testo, mentre in modalità aggiungi il database deve essere aperto solo al momento del salvataggio.
Una casella di testo, in modalità modifica, si presenta così (poniamo che il recordset aperto si chiami RS):
<input type="text" name="cognome" value="<%=rs("cognome")%>">
In modalità aggiungi, invece si presenta così:
<input type="text" name="cognome" value="<%=request("cognome")%>">
Perché request("cognome") e non una stringa vuota? Semplice, perché se alcuni dati del form non sono corretti il form deve ricaricarsi, senza salvare nulla, ma conservando i dati immessi per non costringere l'utente a digitarli tutti di nuovo (l'unica eccezione che si fa usualmente è la password). La prima volta, il request equivale a una stringa vuota.
Da notare che in tutte queste operazioni inerenti la modalità aggiungi, il database non viene mai aperto: l'apertura avviene solo quando tutti i dati sono corretti, per salvarli aggiungendo il nuovo utente.
Un'ultima cosa: questo mio discorso presuppone che il destinatario del form sia se stesso, che è la prassi più corretta. Quindi:
<form method="post" action="register.asp?mode=<%=request("mode")%">
Quando il salvataggio è avvenuto, si reindirizza a un'altra pagina che dice "operazione compiuta con successo", oppure alla homepage, o dove si vuole. In caso contrario non si esce dalla pagina.
Dovrei vedere il codice per mostrare di preciso dove sta l'errore, ma sicuramente hai aperto il database dove non c'è ancora bisogno, prelevando i dati, probabilmente quelli del primo utente registrato.