Hej alla! Något sådant här borde fungera, OBS att du bara får ett felmeddelande även om flera är fel, vill du ha det så eller ska alla fel visas? <code> Det enklare med en If...ElseIf-sats. Men det är bättre att visa alla felaktigheter sammtidigt. Annars måste användaren skicka om informationen flera gånger för att kunna åtgärda dem. KAn göra användaren frustrerad. Hej Andreas... Tjenare Johan! Konstigt, det ser riktigt ut, det är inte så att du har stavat fel någon stans, jag ser att du har skrivit Last_Name på en del ställen och Name_Last på andra t.ex? Annars är det bättre att du använder Andreas kod, den visar alla fel på en gång!Validering av formulärfält - hjälp!
Har ett litet problem med ASP (VBScript)... När jag ska validera fält som fylls i (i detta fall en email-adress, ett förnamn, ett efternamn) så lyckas jag bara att kontrollera email-adressen med följande kod:
If (Email = "" OR Instr(1, Email, "@") = 0 OR Instr(1, Email, ".") = 0) Then
Action = "Ogiltig email-adress. Försök igen."
Nu är frågan... Hur validerar jag de två övriga fälten (Lastname och Firstname)? Ovanstående fungerar alldeles utmärkt men fortsätter jag koda för övriga fält så blir det fel...!
Logiken är:
OM emailadressfältet är tomt ELLER inte innehåller tecknet @ ELLER inte innehåller tecknet . DÅ skrivs ett felmeddelande.
Det jag inte få till är fortsättningen:
OM även efternamnsfätet är tomt OCH/ELLER förnamnsfältet är tomt (bägge måste innehålla tecken) DÅ skrivs ett felmeddelande.
Sedan ELSE och koden fortsätter med övriga aktioner.
Tacksam för hjälp.
/Peter Sv: Validering av formulärfält - hjälp!
<code>
If (Email = "" Or InStr(1, Email, "@") = 0 Or InStr(1, Email, ".") = 0) Then
Action = "Ogiltig email-adress. Försök igen."
ElseIf Len(Firstname) = 0 Then
Action = "Förnamn saknas. Försök igen."
ElseIf Len(Lastname) = 0 Then
Action = "Efternamn saknas. Försök igen."
Else
'alla riktiga
End If
</code>
/JohanSv: Validering av formulärfält - hjälp!
Dim Invalid
If Len(Email) > 0 Then
If Instr(1, Email, "@") = 0 OR Instr(1, Email, ".") = 0 Then
Invalid = True
Action = Action & "Ogiltig email-adress.<br>" & vbcrlf
End If
Else
Invalid = True
Action = Action & "Du har inte angivit email-adress.<br>" & vbcrlf
End If
If Len(Trim(Firstname)) > 0 Then
Invalid = True
Action = Action & "Du har inte angivit förnamn.<br>" & vbcrlf
End If
If Len(Trim(Lastname)) > 0 Then
Invalid = True
Action = Action & "Du har inte angivit efternamn.<br>" & vbcrlf
End If
If Invalid Then
Response.Write Action
Response.Write "Försök igen.<br>" & vbcrlf
Else
'Spara post
End If
</code>Sv: Validering av formulärfält - hjälp!
Sv: Validering av formulärfält - hjälp!
Jo, jag testade denna ElseIf-sats (dock utan framgång):
Dim useraction
Dim Email
Dim Firstname
Dim Lastname
Dim Action
Dim SQL
Email = lcase(request.form("Email"))
Firstname = request.form("First_Name")
Lastname = request.form("Last_Name")
useraction = request.form("Join_Quit")
set RS = server.createobject("adodb.recordset")
SQL = "SELECT * FROM List WHERE Email = '" & Email & "'"
RS.open SQL, conn, 2, 2
If (Email = "" OR Instr(1, Email, "@") = 0 OR Instr(1, Email, ".") = 0) Then
Action = "Ogiltig email-adress. Försök igen."
ElseIf (Lastname = "" OR Firstname = "") Then
Action "Du måste fylla i för- och efternamn. Försök igen."
Men det ville inte lira. Jag försökte också att binda ihop alltihop och bara ha ett felmeddelande... Tji fick jag... Ibland så bara fastnar man på de enklaste saker...
/PeterSv: Validering av formulärfält - hjälp!
Denna funkade halvvägs... Fastnade på att email-kontrollen funkade och likaså om man hade ett tomt fält för förnamn. Fyllde jag i förnamn så ville koden fortfarande ha det till att förnamnet saknades.
Här hela koden (kanske enklare att förstå då):
<!--#include file="dsn.asp"-->
<!--#include file="body.asp"-->
<%
Dim useraction
Dim Email
Dim Firstname
Dim Lastname
Dim Action
Dim SQL
Email = lcase(request.form("Email"))
Firstname = request.form("First_Name")
Lastname = request.form("Last_Name")
useraction = request.form("Join_Quit")
set RS = server.createobject("adodb.recordset")
SQL = "SELECT * FROM List WHERE Email = '" & Email & "'"
RS.open SQL, conn, 2, 2
If (Email = "" Or InStr(1, Email, "@") = 0 Or InStr(1, Email, ".") = 0) Then
Action = "Ogiltig email-adress. Försök igen."
ElseIf Len(Firstname) = 0 Then
Action = "Förnamn saknas. Försök igen."
ElseIf Len(Lastname) = 0 Then
Action = "Efternamn saknas. Försök igen."
'Den gamla koden där enbart email-valideringen funkar
'If (Email = "" OR Instr(1, Email, "@") = 0 OR Instr(1, Email, ".") = 0) Then
'Action = "Ogiltig email-adress. Försök igen."
'ElseIf (Lastname = "" OR Firstname = "") Then
'Action "Du måste fylla i för- och efternamn. Försök igen."
Else
select case useraction
case "Join"
if RS.bof and RS.eof then
RS.addnew
RS("Email") = request("Email")
RS("Name_Last") = request("Name_Last")
RS("Name_First") = request("Name_First")
RS("Date_In") = Date
RS.update
Action = "Tack för din prenumeration."
Set JMail = Server.CreateObject ("JMail.SMTPMail")
- jmail-koden finns här
JMail.Execute
else
Action = "Du är redan prenumerant."
end if
case "Quit"
if RS.bof and RS.eof then
Action = "Du är inte prenumerant."
else
sql2="DELETE FROM List WHERE Email = '" & Email & "'"
conn.execute(sql2)
Action = "Din email-adress har raderats."
end if
end select
End If
RS.close
set RS = nothing
%>
Sedan följer html-kod bara...Sv: Validering av formulärfält - hjälp!
/Johan