---
title: "förbättra if sats och göra om till funktion?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/49472-förbättra-if-sats-och-göra-om-till-funktion"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Percy"
published: "2002-08-04T08:08:26.000Z"
updated: "2003-01-07T19:40:36.000Z"
replies: 11
views: 576
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/49472-förbättra-if-sats-och-göra-om-till-funktion"
---

# förbättra if sats och göra om till funktion?

## #1 — Percy, 2002-08-04T08:08Z

Hej!

Har en lång if-sats som kollar så att användaren uppfyller vissa kriterier innan den får registrera sig. Koden känns dock ganska lång och klumpig, det kanske finns ngt mkt bättre sätt att skriva på? göra den till en funktion också?
Hur skulle LarsG och ni andra göra? :-)

```
If Len(DeliverySurname) < 1 Then
	session("empty") = "Du måste ange ett förnamn"
	pass = "no"
ElseIf Len(DeliveryLastname) < 1 Then
	session("empty") = "Du måste ange ett efternamn"
	pass = "no"
ElseIf Len(DeliveryStreetname) < 1 Then
	session("empty") = "Du måste ange en gatuadress"
	pass = "no"
ElseIf Len(DeliveryZipcode) < 1 Then
	session("empty") = "Du måste ange ett postnummer"
	pass = "no"
ElseIf Len(DeliveryCity) < 1 Then
	session("empty") = "Du måste ange en postadress"
	pass = "no"
ElseIf Len(phone) < 1 Then
	session("empty") = "Du måste ange ett telefonnummer"
	pass = "no"
ElseIf Len(email) < 1 Then
	session("empty") = "Du måste ange en e-postadress"
	pass = "no"
ElseIf Len(password1) < 1 Then
	session("empty") = "Du måste ange ett lösenord"
	pass = "no"
ElseIf Len(password1) < 6 Then
	session("empty") = "lösenordet måste innehålla minst 6 tecken"
	pass = "no"
ElseIf Len(password2) < 1 Then
	session("empty") = "Du måste bekräfta lösenordet"
	pass = "no"
ElseIf NOT password1 = password2 Then
	session("empty") = "lösenorden matchar ej varandra"
	pass = "no"
Else
	strEmail = "SELECT email FROM tb_customer WHERE email = '" & email & "'"
	Set objEmail = Connection.Execute(strEmail)

	IF NOT objEmail.EOF Then
		session("empty") = "E-postadressen är upptagen"
		pass = "no"
	End If
End If
```

tack på förhand

Permalänk: https://www.webforum.nu/p/49472

## #2 — CatZ, 2002-08-04T08:10Z

Men funkar inte den utmärkt ? :) Samma sätt som jag själv skulle gjort det på men den känns "klumpig" som du säger ;)

Permalänk: https://www.webforum.nu/p/740405

## #3 — Percy, 2002-08-04T08:18Z

den fungerar, dock vill ha försöka optimera den. hur gör jag för att göra den till en funktion? lr är det en sub jag ska göra? har inte riktigt koll på d..

Permalänk: https://www.webforum.nu/p/740407

## #4 — Toonster, 2002-08-04T09:55Z

Vad händer om flera fält i formuläret inte är ifyllda?

Även om du gör en funktion, så kommer den att innehålla stort sett samma kod.

/T

Permalänk: https://www.webforum.nu/p/740434

## #5 — solbulle, 2002-08-04T10:28Z

Precis, vad händer om flera fällt inte är ifyllda? Nu klagar **väl** det scriptet bara på det första felet den hittar?

Permalänk: https://www.webforum.nu/p/740445

## #6 — Percy, 2002-08-04T13:55Z

japp, sant, hade gärna velat ha att den postar tillbaks allt igen och visar alla de fält som inte är korrekt ifyllda med någon sorts "errorcode"

ngn duktig som har ngt förslag hur man gör d?

alltså, de värden som är ifyllda innan man postar formuläret kommer fortfarande vara ifyllda precis som nu, skillnaden är att jag vill att den skriver ut ex. "du måste fylla i blablabla" till höger om resp. textruta som inte är korrekt ifylld.

Permalänk: https://www.webforum.nu/p/740572

## #7 — solbulle, 2002-08-04T14:05Z

För att få med dig alla felaktigheter kan du kanske göra något likt detta: (Dock löser inte det din andra ide med en pekning på rätt fält.)
Dock om du väljer att kolla med javascript så kan du ju lätt kolla vilket fält som är tomt och ställa markören där.

```
If Len(DeliverySurname) < 1 Then
	empty = "Du måste ange ett förnamn"
	pass = "no"
End If
If Len(DeliveryLastname) < 1 Then
	empty = empty & "Du måste ange ett efternamn"
	pass = "no"
End If
'osv

session("empty") = empty
```

Permalänk: https://www.webforum.nu/p/740578

## #8 — Percy, 2002-08-04T15:03Z

ok, tack men jag vill ha det så som jag tidigare beskrev dvs

loopa igenom alla formfields och till de obligatoriska fält som inte är ifyllda rätt genereras en felkod.

denna borde man väl kunna lagra i hiddenfields istället för att använda sig av en session? (spara på kapacitet)

Permalänk: https://www.webforum.nu/p/740593

## #9 — Percy, 2002-08-04T22:21Z

LarsG, var är du då man behöver din hjälp???

lr finns d ngn annan kunnig person som kanske kan bidra m ngt i kodväg?

stort tack!

Permalänk: https://www.webforum.nu/p/740897

## #10 — Pace, 2002-08-04T23:00Z

Sådär, det enda du behöver är ändra är två matriser (arrRequiredFields som innehåller de fältnamn som ska kontrolleras samt arrRequiredFieldsErrors som innehåller det felmeddelande som ska visas för det fältnamnet som ligger i samma index).

```
intIndex = 0
[red]arrRequiredFields = Array("DeliverySurname", "DeliveryLastname", "DeliveryStreetname")
arrRequiredFieldsErrors = Array("Förnamn saknas", "Efternamn saknas", "Gata saknas")[/red]

For Each Var In arrRequiredFields
	If Len(Request.Form(Var)) < 1 Then
		strErrorMessages = strErrorMessages & "<LI>" & arrRequiredFieldsErrors(intIndex)
	intIndex = intIndex + 1
Next

If strErrorMessage <> "" Then
	Session("empty") = strErrorMessages
End If
```

Permalänk: https://www.webforum.nu/p/740907

## #11 — solbulle, 2002-08-05T11:38Z

Snyggt Pace!

Permalänk: https://www.webforum.nu/p/743854

## #12 — CatZ, 2003-01-07T19:40Z

> **Pace skrev:**
>
> Sådär, det enda du behöver är ändra är två matriser (arrRequiredFields som innehåller de fältnamn som ska kontrolleras samt arrRequiredFieldsErrors som innehåller det felmeddelande som ska visas för det fältnamnet som ligger i samma index).
> 
>
>
> ```
> intIndex = 0
> [red]arrRequiredFields = Array("DeliverySurname", "DeliveryLastname", "DeliveryStreetname")
> arrRequiredFieldsErrors = Array("Förnamn saknas", "Efternamn saknas", "Gata saknas")[/red]
> 
> For Each Var In arrRequiredFields
> 	If Len(Request.Form(Var)) < 1 Then
> 		strErrorMessages = strErrorMessages & "<LI>" & arrRequiredFieldsErrors(intIndex)
> 	intIndex = intIndex + 1
> Next
> 
> If strErrorMessage <> "" Then
> 	Session("empty") = strErrorMessages
> End If
> ```

Var ska jag placera denna lilla kodsnutt för att få det att fungera ?

Permalänk: https://www.webforum.nu/p/904325

---

Tråden på webben: https://www.webforum.nu/amne/asp/49472-förbättra-if-sats-och-göra-om-till-funktion
