Avatar billede fun22 Nybegynder
19. december 2005 - 22:22 Der er 18 kommentarer og
1 løsning

problem med cookie

Hej..

Jeg har noget problem med at få denne kode til at virke..

<%
            Dim streng, arr, err
            streng = request.cookies("eFrinds.dk")("Hot_Vote")
            arr = SPLIT(streng, "," )

            for i = 1 to UBOUND(arr)
              if arr(i) = id then
              err = "1"
              end if
            next

            if err = "1" then
            %>

Der sker ikke noget selv om id og en af arr er ens. Og jeg er 100% sikker på de er ens. Har prøvet med response.write, og det viste at de var ens..

Hvad kan der være galt?
Avatar billede eagleeye Praktikant
19. december 2005 - 22:34 #1
Så er det nok fordi den ene tolkes som tal og den anden som en streng. Prøv at konverter begge til int sådan her:

if int(arr(i)) = int(id) then
Avatar billede softspot Forsker
19. december 2005 - 22:55 #2
Du er opmærksom på at arrays er nulbaserede i VBScript, ikk'?

Jeg hæfter mig ved at du starter dit loop fra 1 og ikke 0, så jeg vil bare sikre mig at du gør det med vilje...
Avatar billede fun22 Nybegynder
20. december 2005 - 21:29 #3
Nu har jeg sat det sådan her:

for i = 0 to UBOUND(arr)
if int(arr(i)) = id then
err = "1"
end if
next

men nu kommer den med en fejl:

Type mismatch: '[string: ""]' i if int(arr(i)) = id then

Okay softspot, neh det var jeg ikke.. Takker ;)
Avatar billede softspot Forsker
21. december 2005 - 09:37 #4
Kan du ikke prøve at vise hvad den streng du prøver at splitte indeholder, samt hvad id indeholder? Du kan f.eks. lave noget fejlhåndteringskode omkring dit loop der udskriver værdierne i det tilfælde at der opstår fejl (så er det lidt lettere at finde ud af hvad der går galt).

<%
Dim streng, arr, err
streng = request.cookies("eFrinds.dk")("Hot_Vote")
arr = SPLIT(streng, "," )

on error resume next
for i = 0 to UBOUND(arr)
  if arr(i) = id then
    err = "1"
  end if
  if err.number <> 0 then
    response.write "Fejl: streng = " & streng & "<br>arr(" & i & ") = " & arr(i) & "<br>id = " & id & "<br>"
    err.clear
  end if
next
on error goto 0

if err = "1" then
%>
Avatar billede fun22 Nybegynder
21. december 2005 - 21:18 #5
så skriver den således:

Fejl: streng = ,1
arr(0) =
id = 1
Fejl: streng = ,1
arr(1) = 1
id = 1
Avatar billede softspot Forsker
21. december 2005 - 21:23 #6
Det vil sige at det første element er tomt og kan derfor ikke konverteres til en int. Det du bør gøre inden du konverterer en streng er at checke for om den er tom.

<%
Dim streng, arr, err
streng = request.cookies("eFrinds.dk")("Hot_Vote")
arr = SPLIT(streng, "," )

for i = 0 to UBOUND(arr)
  if len(arr(i)) > 0 and isnumeric(arr(i)) then
    if arr(i) = id then
      err = "1"
    end if
  end if
next

if err = "1" then
%>
Avatar billede softspot Forsker
21. december 2005 - 21:24 #7
brugen af isnumeric er naturligvis kun hvis værdien altid forventes at være et tal... :)
Avatar billede eagleeye Praktikant
21. december 2005 - 21:25 #8
Eller lade den sammenligne som teskt:

if CStr(""&arr(i)) = CStr(id) then
Avatar billede fun22 Nybegynder
21. december 2005 - 21:26 #9
det virker stadig ikke.. Den sætter ikke err til 1.. Den er altid tom selvom der er noget i cookien..
Avatar billede eagleeye Praktikant
21. december 2005 - 21:31 #10
Prøv at bruge et andet variable navn end err da det også er navnet på error objebtet, umiddelbart kan det give nogle problemmer. eks:

errStatus = "1"
Avatar billede fun22 Nybegynder
21. december 2005 - 21:33 #11
stadig ikke :(
Avatar billede softspot Forsker
21. december 2005 - 21:34 #12
eagleeye >> Du lever op til dit navn ;D
Avatar billede eagleeye Praktikant
21. december 2005 - 21:35 #13
Prøv at vise din kode som den er lige nu.
Avatar billede softspot Forsker
21. december 2005 - 21:35 #14
Dvs. flg. fungerer altså ikke:

<%
Dim streng, arr, errStatus
streng = request.cookies("eFrinds.dk")("Hot_Vote")
arr = SPLIT(streng, ",")

for i = 0 to UBOUND(arr)
  if cstr(arr(i)&"") = cstr(id) then
    errStatus = "1"
  end if
next

if errStatus = "1" then
%>
Avatar billede fun22 Nybegynder
21. december 2005 - 21:37 #15
<%
Dim streng, arr, errStatus
streng = request.cookies("eFrinds.dk")("Hot_Vote")
arr = SPLIT(streng, "," )

for i = 0 to UBOUND(arr)
  if len(arr(i)) > 0 and isnumeric(arr(i)) then
    if arr(i) = id then
    errStatus = "1"
  end if
end if
            next

            if errStatus = "1" then
            %>
Avatar billede softspot Forsker
21. december 2005 - 21:38 #16
Prøv lige den kode fra 21/12-2005 21:35:48
Avatar billede fun22 Nybegynder
21. december 2005 - 21:39 #17
jo det virkede.. Det havde jeg ikke lige fået ændret det med if cstr(arr(i)&"") = cstr(id) then..
Avatar billede fun22 Nybegynder
21. december 2005 - 21:48 #18
smider du et svar ??
Avatar billede softspot Forsker
21. december 2005 - 22:21 #19
eagleeye eller moi? Jeg synes egentlig eagleeye fortjener point - det var ham der havde fat i de vigtigste pointer :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester