impostare il controllo dei dati immessi dagli utenti su form asp

Toscano

Utente Attivo
27 Apr 2012
31
0
0
Firenze
Pensavo di esercitare il controllo dei dati immessi utilizzando il comando RequiredFieldValidator.

Faccio l'esempio del mio modulo copiando il codice del primo campo, prima e dopo aver inserito RequiredFieldValidator:

Codice:
</script>
<form method="post" action="inserisci1.asp">

<p align="left"><font face="arial" size="2"><b>Nome cognome e classe dello studente/studentessa<br>
<input name="Cognome e classe" value="<%=request.form("Cognome e classe")%>" size="20" type="text"></b></font></p>

dopo aver inserito il controllo:
Codice:
</script>
<form method="post" action="inserisci1.asp">

<p align="left"><font face="arial" size="2"><b>Nome cognome e classe dello studente/studentessa<br>
<input name="Cognome e classe" value="<%=request.form("Cognome e classe")%>" size="20" type="text"></b></font></p>




<asp:RequiredFieldValidator id="ReqCognome e classe" runat="server"
  ControlToValidate="txtCognome e classe"
  Display="Static"
  ErrorMessage="(*) Errore... Il campo NOME è un campo obbligatorio!"
  ForeColor="Red">
</asp:RequiredFieldValidator>

Ho provato però non inserendo dati nel campo richiesto non ricevo l'errore.

Ho attualmente due files: prenota.asp (il modulo vero e proprio) e inserisci1.asp (il file che esegue il comando prendendo i dati immessi).

Domande: la stringa di validazione deve essere sul primo file (così come riportato nell'esempio di codice che ho postato) o sul secondo?
C'è bisogno di un terzo file che si inserisca tra i due esistenti e che controlla la correttezza dei dati immessi?
Posso anche costruire un controllo che impedisca all'utente di scrivere offese e quant'altro?
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Ciao,

il codice che usi non è per asp ma per asp.net pagine aspx.

Per il controllo io preferisco nella pagina dove c'è lo script con i comandi per l'inserimento dei dati.

Un consiglio è buona prassi per il corretto funzionamento degli script non lasciare spazi fra i campi dei form e del database, vedi Cognome e classe

se fai una request su quel form impostando:

Cognome e classe=Request.Form("Cognome e classe") ti da errore alla prima occorrenza dopo lo spazio, la lettera e

Cognome_e_classe Giusto, anche se lo valida dichiarando per il request una nome variabile diverso dal name del form

aa=Request.Form("Cognome e classe") lo sconsiglio uno spazio equivale al carattere ascii %20 come scrivere

Cognome%20e%20classe

I campi sono gli stessi del precedente esempio postato?

Hai un campo Telefono (un campo che deve accettare solo numeri) e altri Nome ecc, solo lettere o lettere e numeri, es Mario2.

Valeria.
 

Toscano

Utente Attivo
27 Apr 2012
31
0
0
Firenze
<.....il codice che usi non è per asp ma per asp.net pagine aspx.....>

A Firenze si dice: Ho preso un granchio!

Vabbè c'ho provato.


Ho capito però che il controllo si deve fare sul secondo file: nel mio caso inserisci1.asp

Per il discorso dell'inserimento del cognome sto pensando che forse mi converrebbe creare sul mio db un'altra tabella nella quale inserisco i cognomi di tutti gli studenti suddivisi per classe e, di conseguenza, farli scegliere come mi hai suggerito per i docenti da un menù a tendina. Questo eviterebbe errori o inserimenti strani. E' però un lavoro immane perchè ho quasi 1000 cognomi:incazz: Però forse ne varrebbe la pena. Farò un po' di prove: ho un file excell con tutti i nomi e cognomi se potessi importarli direttamente nella tabella access sarebbe ottimo.

Quindi resterebbero i controlli solo sui campi IndirizzoPostaElettronica e TelefonoCellulare (li scrivo così come li ho nominati sul db)

posto il codice del file inserisci1.asp:

Codice:
<%
a=request.form("Cognome e classe")
b=request.form("IndirizzoPostaElettronica")
c=request.form("TelefonoCellulare")
d=request.form("NomeInsegnante")

'apro la connessione
set OBJdbConnection=Server.CreateObject("ADODB.Connection")
OBJdbConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("data/data.mdb")
 
Set rs=server.CreateObject("ADODB.Recordset")
rs.Open "Contatti" ,OBJdbConnection,3,3
rs.AddNew
rs("Cognome e classe")=a
rs("IndirizzoPostaElettronica")=b
rs("TelefonoCellulare")=c
rs("NomeInsegnante")=d
rs.update
rs.Close
OBJdbConnection.Close
response.write "Scrittura avvenuta correttamente!"

%>

Attualmente, se nel modulo non digito un campo, l'errore che mi segnala è questo:

Microsoft JET Database Engine error '80040e21'

Field 'Contatti.Cognome e classe' cannot be a zero-length string.

/public/prenotazioni-online/prenota/inserisci1.asp, line 18

ma questo errore non cambia se, ad esempio ho compilato tutti i campi meno uno oppure due oppure nessuno.
Quindi, un certo controllo c'è già. Andrebbe solo ottimizzato, magari con un messaggio specifico del tipo (manca il telefono) oppure manca l'email.
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Ciao,

Questo: Field 'Contatti.Cognome e classe' cannot be a zero-length string. E' corretto il campo richiesto non può essere vuoto

controlla nel database che tutti i campi in Visualizzazione Struttura sia impostato a Consenti lunghezza zero a NO

se uno solo è impostato a SI è possibile inviare un dato vuoto al campo del DB, i controlli lato server.

Codice:
<%
a=request.form("Cognome e classe")
b=request.form("IndirizzoPostaElettronica")
c=request.form("TelefonoCellulare")
d=request.form("NomeInsegnante")


' Controllo inserimento indirizzo email Regular Expression minimo 3 lettere per il nome prima di @
Function RegExpTest(strng)                                                    
Dim regEx 
Set regEx = New RegExp                                                      
regEx.Pattern =  "^[\w\-\.]*[\w\.][\w\-\.]*[\w\.][\w\-\.]*[\w\.]\@[\w\.]*[\w\-\.]+[\w\-]+[\w]\.+[\w]+[\w]$"
regEx.IgnoreCase = True
RegExpTest = regEx.Test(strng)                                      
End Function 

' Controllo inserimento numero di telefono Regular Expression solo Numeri
Function RegExpTest1(strng1)                                                    
Dim regEx1 
Set regEx1 = New RegExp                                                      
regEx1.Pattern =  "^[0-9]"
RegExpTest1 = regEx1.Test(strng1)                                      
End Function 


' controllo pagina di provenienza se diversa dal form ritorna a quella pagina
conferma=request.form("conferma") 
conferma=request.servervariables("http_referer")
if conferma = "" then
response.redirect "default.asp" ' redirect allla pagina di compilazione del form
end if


' Controllo inserimento Nome campo vuoto primo carattere no spazio
if a = ""  or MID((a),1,1) = " " then 
Response.Write"Inserire il Cognome e la Classe! "
response.write"<a href=""#"" onClick=""javascript:history.back(0)"";return false"">Torna indietro e correggi</a>"
response.end
end if


' controllo inserimento email campo vuoto primo carattere no spazio
if b = ""  or MID((b),1,1) = " " then 
Response.Write"Inserire l'indirizzo di Email! "
response.write"<a href=""#"" onClick=""javascript:history.back(0)"";return false"">Torna indietro e correggi</a>"
response.end
end if


' Controllo e validazione inserimento indirizzo email
if not(RegExpTest(b)) then 
Response.Write"Inserire un indirizzo di Email Valido! "
response.write"<a href=""#"" onClick=""javascript:history.back(0)"";return false"">Torna indietro e correggi</a>"
response.end
end if


' controllo inserimento Numero Cellulare campo vuoto primo carattere no spazio 
if c = ""  or MID((c),1,1) = " " then 
Response.Write"Inserire il Numero di Cellulare! "
response.write"<a href=""#"" onClick=""javascript:history.back(0)"";return false"">Torna indietro e correggi</a>"
response.end
end if


' Controllo e validazione Numero Cellulare
if not(RegExpTest1(c)) then 
Response.Write"Il campo Numero Cellulare pu&ograve; contenere solo Numeri! "
response.write"<a href=""#"" onClick=""javascript:history.back(0)"";return false"">Torna indietro e correggi</a>"
response.end
end if


' controllo inserimento Numero Cellulare non deve contenere numeri minori o maggiori di 10 3383333333 
if Len(c) < 10 or Len(c) > 10 then 
Response.Write"Il Numero di Cellulare deve contenere dieci (10) Numeri! "
response.write"<a href=""#"" onClick=""javascript:history.back(0)"";return false"">Torna indietro e correggi</a>"
response.end
end if



'apro la connessione
set OBJdbConnection=Server.CreateObject("ADODB.Connection")
OBJdbConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("data/data.mdb")

Set rs=server.CreateObject("ADODB.Recordset")
rs.Open "Contatti" ,OBJdbConnection,3,3
rs.AddNew
rs("Cognome e classe")=a
rs("IndirizzoPostaElettronica")=b
rs("TelefonoCellulare")=c
rs("NomeInsegnante")=d
rs.update
rs.Close
OBJdbConnection.Close
response.write "Scrittura avvenuta correttamente!"
%>

Non è possibile lasciare un campo vuoto e neppure la barra spaziatrice come primo carattere (ascii %20) anche se Consenti l'unghezza zero è impostato a no lo validerebbe come un dado valido.

Sono inseriti tutti i controlli sui campi, poi decidi come gestirli in risposta a (Per il discorso dell'inserimento del cognome sto pensando che forse mi converrebbe creare sul mio db un'altra tabella nella quale inserisco i cognomi di tutti gli studenti suddivisi per classe e, di conseguenza, farli scegliere come mi hai suggerito per i docenti da un menù a tendina. Questo eviterebbe errori o inserimenti strani. E' però un lavoro immane perchè ho quasi 1000 cognomi).

Regular Expression per il controllo dell'indirizzo email tre lettere [et], tre per, isp, minimo due per il dominio

Regular Expression per l'inserimento di soli numeri nel campo TelefonoCellulare

Controllo se sono inseriti 10 numeri per il N° cellulare no < 10 no > 10

Altri campi controllo campo vuoto e barra spaziatrice come primo carattere.

Questo:

Codice:
conferma=request.form("conferma") 
conferma=request.servervariables("http_referer")
if conferma = "" then
response.redirect "pagina_form.asp" ' redirect allla pagina di compilazione del form
end if

Controlla se la pagina di provenienza e quella che contiene il form, se uno digita nella barra degli indirizzi la pagina destinazione viene reindirizzato alla pagine che contiene il form.

nel form aggiungi subito dopo il pag di apertura <form>

<input type="hidden" name="conferma" value="<%= referer %>">

Valeria.
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Ciao,

una dimenticanza,

adesso hai i controlli nella pagina che inserisce i dati nel DB

nell'esempio precedente dove ho inserito il javascript per aprire la PopUp per vedere l'anteprima:

Codice:
<script type="text/javascript">
function anteprima(ff){
larghezza = 600;
altezza = 400;
var x = (screen.width-larghezza-10)/2; 
var y = (screen.height-altezza)/2; 
window.open('','anteprima','width=' + larghezza + ',height=' + altezza + ',left=' + x + ',top=' + y);
oldAction = ff.action;
ff.target='anteprima'; 
ff.action='anteprima.asp'; 
ff.submit();
ff.action = oldAction;
}
</script>

Deve essere aggiunto un paramento, in quanto una volta cliccato il tasto Anteprima Invia perde il target, succede che dopo la visualizzazzione dell'anteprima il target diventa _blank e ti apre i dati in un'altra pagine senza possibilità di utilizzo del link "Torna indietro e Correggi"


Codice:
<script type="text/javascript">
function anteprima(ff){
larghezza = 600;
altezza = 400;
var x = (screen.width-larghezza-10)/2; 
var y = (screen.height-altezza)/2; 
window.open('','anteprima','width=' + larghezza + ',height=' + altezza + ',left=' + x + ',top=' + y);
  oldTarget = ff.target
  oldAction = ff.action
  ff.target='anteprima' 
  ff.action='anteprima.asp' 
  ff.submit()
  ff.target = oldTarget // aggiunta per non perdere il target alla pagina inserisci.asp
  ff.action = oldAction
}
</script>

Per copiare i dati da una tabella di Excel e inserire tutti i dati in un campo del DB:

Metti tutti i dati che interessano nella tabella A del file .Excel, dopo fai un nuovo campo nel DataBase, con il mouse che seleziona tutti i campi della tabella A di Excel cliccando sulla lettera A e con copia e incolla inserisci il tutto da Excel alla nuovo campo del DB, dopo rinomini quel campo con quello utilizzato adesso.

Per utilizzare il metodo delle select dinamiche.

Valeria.
 

Toscano

Utente Attivo
27 Apr 2012
31
0
0
Firenze
ho copiato la stringa nella pagina del form però funzionava anche prima.

A proposito, ho notato che invece sulla pagina dei controlli la stringa che segnala l'errore e definisce il link per tornare indietro e correggere:

Codice:
response.write"<a href=""#"" onClick=""javascript:history.back(0)"";return false"">Torna indietro e correggi</a>"

se uso firefox non funziona. Cioè appena clicco mi rimanda al modulo ma subito dopo riapre il file inserisci.asp (quello appunto dei controlli.

Ho letto un po' in rete e ho trovato che in effetti firefox ha quel problema. Allora ho sostituito con:

Codice:
response.write"<a onclick=""javascript:history.back()""; font style=""color: rgb(51, 51, 255)""; text-decoration: ""underline"">Torna indietro e correggi</a></a>"

cioè ho tolto a href e tuto funziona. Ho dovuto però cambiare i colore della scritta Torna indietro e correggi (l'ho fatto blu e sottolineato) per evidenziare che è un link perché non si vede, ovviamente più la manina.
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Ciao,

hai sostituito questo


Codice:
<script type="text/javascript">
function anteprima(ff){
larghezza = 600;
altezza = 400;
var x = (screen.width-larghezza-10)/2; 
var y = (screen.height-altezza)/2; 
window.open('','anteprima','width=' + larghezza + ',height=' + altezza + ',left=' + x + ',top=' + y);
oldAction = ff.action;
ff.target='anteprima'; 
ff.action='anteprima.asp'; 
ff.submit();
ff.action = oldAction;
}
</script>

Con questo

Codice:
<script type="text/javascript">
function anteprima(ff){
larghezza = 600;
altezza = 400;
var x = (screen.width-larghezza-10)/2; 
var y = (screen.height-altezza)/2; 
window.open('','anteprima','width=' + larghezza + ',height=' + altezza + ',left=' + x + ',top=' + y);
oldTarget = ff.target
oldAction = ff.action
ff.target='anteprima' 
ff.action='anteprima.asp' 
ff.submit()
ff.target = oldTarget // aggiunta per non perdere il target alla pagina inserisci.asp
ff.action = oldAction
}
</script>

Per la personalizzazione del link a piacer tuo, o direttamente nel codice del response o in un CSS che richiami con class="nome_classe"

Ti ho aggiunto quel nuovo controllo sul target del JS altrimenti con il vecchio ogni volta che si genera (un valore richiesto risulta true (vero) al controllo, a significare che sono stati inseriti dati errati) ti apre una nuova pagina _blank se prima hai Fatto l'antreprima con solo i dato generati dal response e il target precedente lo perdi o ti apre l'anteprima se premi il button Invia.

Io lascerei l'href o con il # (non tutti i browser funzionano con solo <a onclick=".......), se non vuoi usare il # metti un javascripo:void(0) nel link e togli il return false:

Codice:
response.write"<a href=""javascript:void(0)"" onclick=""javascript:history.back(0)""">Torna indietro e correggi</a>"

altro l'ho visto solo adesso onclick NO onCliCK o OnClick stesso problema di incompatibilità con alcuni browser.

Io preferisco il # vedi tu.

controlla qua gi</a></a>" hai due tag di chiusura nel link.

Un problema di Firefox è che una volta premuto un link, tasto, link immagine rimane selezioneto, quindi usando un Back sulla pagina basta premere il tasto invio della tastiera per eseguire l'ultima operazione effettuata. Per ovviare basta aggiungere al link, button ecc.. onfocus="this.blur()"

questo evita la situazione descritta sopra <a href="link.html" onfocus="this.blur()">Clicca</a>


Valeria.
 

Toscano

Utente Attivo
27 Apr 2012
31
0
0
Firenze
Ho sostituito il codice come hai consigliato.

Ho anche sostituito su inserisci1.asp la stringa così come l'hai scritta:

Codice:
response.write"<a href=""javascript:void(0)"" onclick=""javascript:history.back(0)""">Torna indietro e correggi</a>"

Mi sembra che funzioni tutto
 
Discussioni simili
Autore Titolo Forum Risposte Data
T Impostare un controllo da database, di dati immessi in un form asp Classic ASP 6
M Come impostare dimensioni percentuali corrette? HTML e CSS 3
S impostare un testo e una img nella stessa riga con jsPDF Javascript 0
K Impostare scala di proporzione (Indesign) Webdesign e Grafica 0
S Impostare attributo "onclick" Javascript 5
G Impostare suggerimenti campo text di un form Javascript 2
K [MySQL] Impostare Database MySQL 2
Tommy03 Variabile PHP per impostare una proprietà CSS PHP 2
Cosina [PHP] Impostare colore singolo elemento in fwrite PHP 2
P impostare due Vlan su router - dhcp su seconda sottorete e statico su prima Reti LAN e Wireless 0
G [HTML] Impostare dimensione immagini in un div HTML e CSS 2
D Consiglio su come impostare IP statico Reti LAN e Wireless 0
G [PHP] composer: impostare l'autoloading più facilmente PHP 0
A [Javascript] Impostare immagine sfondo da checkbox, sito web Javascript 1
Trapano [PHP] come impostare un if else PHP 10
M [Photoshop] impossibile impostare Profilo colori Photoshop 1
booklisa [PHP] Impostare constanti nelle url PHP 7
ANDREA20 [PHP] Non riesco ad impostare reset password invio via email PHP 6
S impostare colore sfondo di ogni cella di una datagridview Visual Basic 1
A impostare una query con operatori condizionali MySQL 1
LuigiDonato Come Impostare Tabelle MySQL 2
R Problema impostare valore textbox MS Access 0
D Select concatenate impostare di default dato memorizzato Javascript 4
M Consiglio su come impostare intervista conoscitiva con cliente per sito ad un gruppo musicale. Discussioni Varie 3
M Impostare sfondo Sviluppo app per Android 1
F [RISOLTO]js function per impostare minimo totale Javascript 8
Emix [RISOLTO]Impostare focus su textbox dopo foreach jQuery 16
A impostare la posizione iniziale di un blocco Javascript 0
giancadeejay Impostare tempo per vedere un immagine nell'array. Javascript 2
A hover impostare bordo HTML e CSS 9
B Impostare cartella temporaea immagine Javascript 1
B Impostare permessi su XAMPP Apache 0
N Impostare il tempo jQuery 5
G Come impostare il formato data per mysql MySQL 11
nim Impostare gli area tag HTML e CSS 3
S Come posso impostare a grandi linee questa tabella? PHP 8
P impostare e salvare impaginazione sito PHP 0
A Impostare tabelle per forum e codice php PHP 6
S Come impostare campi non obbligatori php PHP 5
SolidSnake4 impostare htaccess su aruba Hosting 1
A impostare un immagine con css HTML e CSS 17
H Creare una pagina che si collega a keepvid. come impostare il form? HTML e CSS 3
B Impostare un DIV in primo piano e un'altro DIV in secondo piano HTML e CSS 2
B impostare media player 11 Windows e Software 3
B impostare una pagina coi css HTML e CSS 1
G chido aiuto per impostare rete wifi Reti LAN e Wireless 0
S [VB.NET 2005 Express] Impostare una variabile Programmazione 0
Y impostare excel PHP 0
S impostare la index page HTML e CSS 3
D Impostare Invio Email HTML e CSS 3

Discussioni simili