3 messaggi dal 29 novembre 2002
Salve a tutti!
Sono un principiante e avrei solo bisogno di un piccolo aiuto con alcuni attributi del comando If... Ho scritto una classica pagina per i commenti dal sito con un form che recupera i dati e una pagina asp successiva che verifica se i campi sono vuoti. La parte del mio codice che mi fa tribulare (scusate ancora l'ingnoranza del sottoscritto) è la seguente:

If Len(Request.Form("commenti")) = 0 then
manca_testo()
end if
If Len(Request.Form("nome")) = 0 then
manca_nome()
end if
If Len(Request.Form("email")) = 0 then
manca_mail()
else manda_posta(form)
ok_grazie(nome)
end if
End sub

Mi sembrava funzionasse bene, finché non mi sono accorto che bastava compilare semplicemente il campo destinato all'email nel form per aggirare l'ostacolo e trovarsi con un tripplice output:
1. manca il nome
2. manca il testo
3. grazie per il tuo messaggio

Come posso fare in modo che invii il commento solo quando i tre requisiti sono stati soddifatti? Inoltre è possibile specificare che il campo email debba contenere obbligatoriamente il carattere "@"?
Grazie mille a chi mi risponderà senza che gli cadano le braccia... :-)

Oliberserk

**** So di non sapere ****
11.886 messaggi dal 09 febbraio 2002
Contributi
non ti preoccupare ci siamo passati tutti

l'IF valuta una condizione, e se questa è vera, esegue il codice sottostante, ALTRIMENTI (ed ecco che entra l'ELSE) esegue dell'altro codice.
Puoi usare l'else in combinazione con l'if per valutare una nuova condizione e proseguire di nuovo...

correggi il tuo codice in questo modo:

If Len(Request.Form("commenti")) = 0 then
manca_testo()
elseif Len(Request.Form("nome")) = 0 then
manca_nome()
elseif Len(Request.Form("email")) = 0 then
manca_mail()
else
manda_posta(form)
ok_grazie(nome)
end if

questo codice si traduce nel linguaggio naturale:
manca il testo? no, allora manca il nome? no, allora manca l'email? no, invia la posta.
Se anche solo una di queste tre risposte è si, l'email non viene mandata.

Dicevi di voler controllare anche se nel campo email si trova la chiocciola. Bene, puoi inserire più condizioni in un if, l'importante è che siano legate tra loro da un operatore logico: AND oppure OR.
A seconda che usi l'uno o l'altro hai questi risultati:
vero AND vero = vero
vero AND falso = falso
falso AND falso = falso
falso AND vero = falso
Mentre con l'or si verifica in contrario:
vero OR vero = vero
vero OR falso = vero
falso OR vero = vero
falso OR falso = falso
Nel tuo caso la funzione manca_mail() verrà eseguita se il campo email è vuoto O se non c'è la chiocciola, quindi usiamo l'OR.

elseif Len(Request.Form("email")) = 0 OR Instr(Request.Form("email"),"@") = 0 then


La funzione instr() accetta nel caso più comune due parametri: il secondo è la stringa da cercare all'interno della stringa messa come primo parametro. Se la chiocciola non viene trovata, ti da come risultato 0, altrimenti ti restiuisce la posizione della chiocciola all'interno della stringa grande:

Instr("email@dominio.it","@")

ti da come risultato 5, perchè la chiocciola si trova al 5° posto.
Esiste una variante di questa funzione, InstrRev, che comincia a cercare da destra. Nell'esempio precedente non avrebbe fatto differenza perchè cercando da destra o da sinistra, la chiocciola sempre il 5° posto occupa, mentre in questo caso:

Instr("http://dominio.it/","/")
qui ho come risultato 6,
InstrRev("http://dominio.it/","/")
qui ho come risultato 18, perchè cercando da destra incontro per primo l'ultima barra.
Tutto bene?

Modificato da BrightSoul il 29 novembre 2002 22.02 -

Enjoy learning and just keep making
3 messaggi dal 29 novembre 2002
Ok!!! Funziona! Ti ringrazio molto! :-)))

Adesso però ho notato che mi notifica di un elemento mancante alla volta. Ciò è esegue le funzioni (manca_mail ecc) una alla volta dando la precendenza a quella che si trova più in alto nel codice. No si può far sì che mi dica che manca sia il nome che il commento? Andrò a tentativi...
:-)

Cmq mi sei stato molto d'aiuto!

Grazie ancora!!

**** So di non sapere ****

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.