ciao ragazzi, speriamo che abbiate una soluzione per ciò che vorrei fare.

In poche parole ho un modulo di iscrizione..
Ho inserito la funzione in javascript che mi controlla l'avvenuta compilazione dei vari campi..

Il problema mi sorge una volta che invio il form..

Sapendo che in alcuni BROWSER il controllo in javascript, spesso e volentieri nn viene tenuto conto, volevo "RI"controllare la corretta compilazione dei vari campi (Lato Server) e se risultasse un'errore vorrei tornare indietro e segnalare quale è il campo errato..


Ho provato a fare un esempio (per il momento banale) tipo:
if campo = "" then
response.redirect "modulo_registrazione.asp"
end if
In questo modo torna indietro..ricaricando il form..ma tutti i campi (anche quelli compilati correttamente) tornano bianchi..

Se invece faccio una cosa del genere:

if campo = "" then
response.write "<script>
response.write "history.back();"
response.write "</script>
end if
torna indietro regolarmente con i campi ancora compilati ma non riesco a trovare un modo per segnalare dove stia l'errore..

A voi vi è già capitato di dover risolvere questo problema..e se si..come lo avete risolto..o se avete un lampo di genio su come risolvere il mio..!?!?

Nella speranza di essermi spiegato in maniera corretta..confido in un vs aiuto..
333 messaggi dal 06 agosto 2003
Io personalmente ho memorizzato i dati in campi nascosti... soprattutto dal fatto che i dati non erano tantissimi...
e sul form ho fatto in modo che prendesse i dati che gli Riinvio:
Esempio:

modulo_registrazione.asp

<form action="Controllo.asp">
NOME:<input type=text name=NOME value="<%=request("NOME")%>"><br>
<input type=submit value=VAI>
</form>

Controllo.asp

<form action="modulo_registrazione.asp" name=INDIETRO>
<input type=hidden name=NOME value="<%=request("NOME")%>">
<form>
<%
if request("NOME")="" then
INDIETRO.submit
else
..altre istruzioni..
end if
%>

Vorrei farti notare anche il fatto che i valori restituiti da un Form si ricavano con request("Campo")... non semplicemente con Campo...

E' una soluzione... comunque vedi un pò tu

Conosco la metà di voi soltanto a metà e nutro per meno della metà di voi metà dell'affetto che meritate...

Bilbo Baggins
Tauren ha scritto:
Vorrei farti notare anche il fatto che i valori restituiti da un Form si ricavano con request("Campo")... non semplicemente con Campo...

E' una soluzione... comunque vedi un pò tu


innanzitutto ti ringrazio TAUREN, ma lo sò benissimo come ricevere i dati da un form..

Il mio esempio..era solo per far capire il problema..
era sottointeso che io abbia passato il valore del campo ad una variabile:

campo = request("campo")

Cmq, riguardo al mio problema..
Il form, il controllo dei campi, il controllo nel db (se vi sono altri dati uguali) e l'inserimento dei dati lo vorrei fare nella stessa pagina..

:-(
333 messaggi dal 06 agosto 2003
Allora le cose si complicano leggermente, prova così:

<SCRIPT>
<%
language="vbscript"
Sub CreaForm(Messaggio)
if Messaggio<>"" then
Response.Write "ERRORE:" & Messaggio & "<br>"
end if
response.write "<form action=""modulo_registrazione.asp"" method=post>"
Response.Write "NOME:<input type=text name=NOME value=""" & request("NOME") & """><br>"
Response.Write "COGNOME:<input type=text name=COGNOME value=""" & request("COGNOME") & """><br>"
Response.Write "<input type=HIDDEN name=FLAG value=""1"">"
Response.Write "<input type=submit value=""VAI"">"
response.write "</form>"
End Sub
Sub Controlla(Valore,Messaggio)
if Valore="" then
call CreaForm("Il valore assegnato a " & Messaggio & " non è valido")
response.End()
end if
End Sub

%>
</script>
<html>
<head>
</head>
<body>
<%
if request("FLAG")="1" then
call Controlla(request("NOME"),"NOME")
call Controlla(request("COGNOME"),"COGNOME")
..istruzioni nel caso tutto sia giusto..
else
call CreaForm("")
end if
%>
</body>
</html>
Modificato da Tauren il 18 marzo 2004 09.48 -

Conosco la metà di voi soltanto a metà e nutro per meno della metà di voi metà dell'affetto che meritate...

Bilbo Baggins
635 messaggi dal 06 settembre 2002
Un'altra soluzione potrebbe essere quella di utilizzare gli include come segue

form.asp (pagina con il form)

if ERRORE=1 then
%><!--#INCLUDE FILE="errore.asp"--><%
end if %>

<form method="post" name="maschera" action="controllo.asp">
<input type="text" name="nome" value="<%=NOME%>">
<input type="text" name="cognome" value="<%=NOME%>">
...
...
<input type="submit" name="button" value="invia">
</form>

--------------------------------

controllo.asp (pagina che riceve i dati del form)

'-- dichiarazione FLAG di ERRORE
ERRORE=0 'Flag di ERRORE Generico
NO_NOME=0 'Flag di ERRORE su NOME=NULL
NO_COGNOME=0 'Flag di ERRORE su COGNOME=NULL
CE_NOME=0 'Flag di ERRORE su NOME in database
CE_COGNOME=0 'Flag di ERRORE su COGNOME in database

NOME=trim(Request.Form("nome"))
COGNOME=trim(Request.Form("cognome"))

if NOME="" then
ERRORE=1
NO_NOME=1
end if

if COGNOME="" then
ERRORE=1
NO_COGNOME=1
end if

'Apertura connessione al database
if ERRORE=0 then

'Controllo se NOME esiste nel DB
'se esiste
ERRORE=1
CE_NOME=1

'Controllo se COGNOME esiste nel DB
'se esiste
ERRORE=1
CE_COGNOME=1

if ERRORE=0 then
'-- Aggiorno il database
end if

end if
'Chiusura connessione al database

if ERRORE=1 then
%><!--#INCLUDE FILE="form.asp"--><%
else
'----------------------
'quello che vuoi tu
'---------------------
end if %>

--------------------------------

errore.asp (pagina che visualizza gli errori sopra il form)

<hr>
<font face="arial" size="1" color="#FF0000">Impossibile proseguire con l'operazione di aggiornamento perché:<br></font>
<hr>
<% if NO_NOME=1 then %>
<font face="arial" size="1" color="#FF0000">Inserisci il NOME<br></font>
<% end if

if CE_NOME=1 then %>
<font face="arial" size="1" color="#FF0000">Il NOME è presente nel database<br></font>
<% end if

if NO_COGNOME=1 then %>
<font face="arial" size="1" color="#FF0000">Inserisci il COGNOME<br></font>
<% end if

if CE_COGNOME=1 then %>
<font face="arial" size="1" color="#FF0000">Il COGNOME è presente nel database<br></font>
<% end if %>

<hr>
Modificato da ojd il 18 marzo 2004 19.56 -

OJD
??

cercherò di mettere in atto ciò che mi avete consigliato..anche se nn mi sono chiare alcuni passaggi..cmq se dovessi trovare difficoltà..tornerò nei paraggi..

visto che ci sono:

in vbscript esiste un modo per controllare i caratteri inseriti in un campo txt di un form?

in javascript sarebbe così...+ o - :

 for (var i = 0; i < pass.length; i++) {
      var ch1 = pass.substring(i, i + 1);
      if ((ch1 < "a" || "z" < ch1) && (ch1 < "A" || "Z" < ch1) & (ch1 < "0" || "9" < ch1) & ( ch1 != "à") & ( ch1 != "è") & ( ch1 != "ì") & ( ch1 != "ò") & ( ch1 != "ù") & (ch1 != ' ') & ( ch1 != "'")){
alert("\nCaratteri non consentiti nel campo Password.\nPer favore inserisca correttamente la Password.");
 
in vbscript???
333 messaggi dal 06 agosto 2003
Certamente!

puoi scorrere i caratteri in questo modo:

for i=1 to len(Stringa)

ch1=Asc(Mid(Stringa,i,1))
if (ch1<Asc("a") or Asc("z")<ch1) and (ch1<Asc("A") or Asc("Z")<ch1) and (ch1<Asc("0") or Asc("9")<ch1) and ch1<>Asc("à") and ch1<>Asc("à") and .... then
MsgBox "Caratteri non consentiti nel campo Password. Per favore inserisca correttamente la Password."
end if

next

Conosco la metà di voi soltanto a metà e nutro per meno della metà di voi metà dell'affetto che meritate...

Bilbo Baggins
grazie TAUREN..

presumo che STRINGA..io debba mettere il nome campo ricevuto dal form?

es:

for i=1 to len(request.form("password"))
...
...
..


giusto??

e poi quando inserisci:

MsgBox "Caratteri non consentiti nel campo Password. Per favore inserisca correttamente la Password."

come verrebbe visualizzato il messaggio ??
Come finestra di alert come in javascript?

grazie per il tuo aiuto

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.