/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Lave en for-løkke og gange indholdet fra e~
Fra : Christopher Larsen


Dato : 20-08-04 20:36

Hej
Jeg har en form hvor brugeren skal indtaste 10 cifre. For at
tjekke om tallet er korrekt, vil jeg have multipliceret hvert
cifre med en bestemt faktor. Disse faktorer befinder sig i et
array: tal = array(4, 3, 2, 7, 6, 5, 4, 3, 2, 1).

jeg kan tjekke længden på det indtastede cifre ved at bruge Len.
Og jeg kan hente strengen med Mid, men hvordan får jeg lavet en
løkke der gennemløber tallene i formen, det er mit problem.

på forhånd tak

Christopher

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jens Gyldenkærne Cla~ (20-08-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 20-08-04 21:11

Christopher Larsen skrev:

> Jeg har en form hvor brugeren skal indtaste 10 cifre. For at
> tjekke om tallet er korrekt, vil jeg have multipliceret hvert
> cifre med en bestemt faktor. Disse faktorer befinder sig i et
> array: tal = array(4, 3, 2, 7, 6, 5, 4, 3, 2, 1).

Prøv at se følgende:

Dim tal
tal = array(4, 3, 2, 7, 6, 5, 4, 3, 2, 1)

Dim xx
xx = "1234567890"

Dim i
For i = 1 to 10
   response.write CInt(mid(xx, i, 1)) * tal(i-1) & "-"
Next

Du kan erstatte xx-erklæringen med et form-request for at hente
data udefra - men husk at lave indledende validering først (længde
= 10 og alle data numerisk).
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Christopher Larsen (22-08-2004)
Kommentar
Fra : Christopher Larsen


Dato : 22-08-04 13:27

Jeg har brugt nedenstående kode, som en del af et tjek af et
indtastet nummer. Men for at jeg præcist kan tjekke indtastningen,
skal jeg også have lagt tallene sammen. Hvordan gør jeg det? Jeg har
lavet et slags tilløb til en løsning. Men den virker ikke!

Hilsen
christopher
>
> Dim tal
> tal = array(4, 3, 2, 7, 6, 5, 4, 3, 2, 1)
>
> Dim xx
> xx = "1234567890"
>
> Dim i
> For i = 1 to 10
>    response.write CInt(mid(xx, i, 1)) * tal(i-1) & "-"
> Next
>

<%
If not IsNumeric(Left(Request.Form("cprnr"), 10))*1 then

response.write "Forkerte tegn, prøv igen"

else

If not Len(request.form("cprnr")) = 10 Then
response.write "Forkert indtastning, prøv igen"

else


function beregn(nummer)
Dim vaegte, cpr, i
   vaegte = array(4, 3, 2, 7, 6, 5, 4, 3, 2, 1)
      cpr = (request.form("cprnr"))
   
   For i = 1 to 10
   response.write CInt(mid(cpr, i, 1)) * vaegte(i-1)
   Next
end function

'det er nedenstående kode del, som jeg gerne ville have til at
'tjekke indtastningens gyldighed.

call beregn(nummer)
if (beregn(nummer) mod 11 = 0) then
response.write "det indtastede cprnummer er korrekt"
else
response.write "det indtastede cprnummer er forkert"

end if
end if
end if

%>

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (22-08-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 22-08-04 20:47

Christopher Larsen skrev:

> Men for at jeg præcist kan tjekke indtastningen, skal jeg også
> have lagt tallene sammen. Hvordan gør jeg det?

+

Det der evt. kan snyde er at du skal typecaste til en taltype (int)
først.


> Jeg har lavet et slags tilløb til en løsning. Men den virker
> ikke!

*Hvordan* virker den ikke? Det er lettere at hjælpe dig hvis du
fortæller konkret hvordan din kode ikke virker. Se evt. siden her:
<http://asp-faq.dk/article/?id=41>




> If not IsNumeric(Left(Request.Form("cprnr"), 10))*1 then
>
> response.write "Forkerte tegn, prøv igen"
>
> else
>
> If not Len(request.form("cprnr")) = 10 Then
> response.write "Forkert indtastning, prøv igen"

Jeg vil foreslå dig at bytte om på de to tjek - så længdetjekket
kommer før tjekket af taltypen. Hvis der er indtastet en værdi på
mindre end 10 tegn, vil det øverste tjek give en kørselsfejl.

Du kan i øvrigt også gøre din dobbelte if-sætning lidt enklere ved
at bruge syntaksen herunder:

If [udtryk] Then

ElseIf [andet udtryk] Then

Else

End If

(der kan sættes flere elseIF-linjer ind hvis der er behov for det).


> function beregn(nummer)
> Dim vaegte, cpr, i
> vaegte = array(4, 3, 2, 7, 6, 5, 4, 3, 2, 1)
> cpr = (request.form("cprnr"))
>
> For i = 1 to 10
> response.write CInt(mid(cpr, i, 1)) * vaegte(i-1)
> Next
> end function

Koden herover udskriver blot værdierne.

Hvis du skal lægge tallene sammen, skal du bruge en variabel til at
gemme summen i - fx "sum". Giv sum en startværdi på 0 og læg så
værdien af produktet af vaegte(i) og det tilsvarende tal fra cpr-
nummeret til for hver enkelt ciffer (læg summen ind i for-løkken).

Jeg vil lade dig selv pusle med at få funktionen på plads.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177548
Tips : 31968
Nyheder : 719565
Indlæg : 6408804
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste