Avatar billede lordnelson Seniormester
13. april 2007 - 09:36 Der er 7 kommentarer og
1 løsning

Spørgsmål om session

har prøvet det her:
<%
id = 100100100



vareid = request("vareid")
vare = request("varetekst")
Str =  request("str")
color = request("color")

if session("varetal") < 100 then
session("varetal") =100
else
session("varetal") = session("varetal") +1
end if

varetalId = cstr(id)  & cstr(session("varetal"))
session(varetalID&"vareid")= vareid
session(varetalID&"varenavn") = vare
session(VaretalID&"varestr") = Str
session(varetalID&"varefarve") = color


for i =  cstr(id) & cstr(101) to cstr(id) & session("varetal")

'if cdbl(left(varetalID,9)) = id then
response.write session(varetalID&"varenavn"):response.write "  " &  session(varetalID&"varestr") :response.write " "
'session(VaretalID&"varefarve")& "<br>"
'end if
next

%>
Tanken var at der første gang der bliver sendt til siden bliver der lavet en session session(varetalID&"varenavn") = vare
dvs. session(100100101varenavn) = home
næste gang der bliver sendt til siden skulle den så gerne lave en ny session
session(100100102varenavn) = jens

Men når løkken køres bliver begge sessions værdier til jens
hvad gør jeg galt har?

LN
Avatar billede softspot Forsker
13. april 2007 - 09:48 #1
Generelt tror jeg du skal være mere specifik med hvilke typer der arbejdes med i de enkelte situationer. VBScript er baseret på varianter som antager en type alt efter hvilken værdi der lægges i variablen og det kan til tider godt kikse lidt for VBScript at tolke hvad det er du vil.

Derfor skal du som hovedregel (i det mindste i forbindelse med beregninger og sammensætninger) fortælle VBScript hvilken type DU gerne vil have den skal tolke en variant som. Dette gøres ved at "typecaste", eller typekonvertere, som det må hedde på dansk. Der findes en række funktioner til dette, bla. CStr(), CLng(), CInt(), CBool(), CDate() m.fl. (hvoraf du selv bruger nogle af dem)...

Jeg tror bla. det kan være passager som denne der kan volde problemer:

if session("varetal") < 100 then
  session("varetal") = 100
else
  session("varetal") = session("varetal") +1
end if

Her ville jeg nok typecaste 2 steder, således:

if clng(session("varetal")) < 100 then
  session("varetal") = 100
else
  session("varetal") = clng(session("varetal")) + 1
end if
Avatar billede lordnelson Seniormester
13. april 2007 - 09:57 #2
kan godt forstå dig, men ser her:
for i =  cstr(id) & cstr(101) to cstr(id) & session("varetal")
response.write i
if cdbl(left(varetalID,9)) = id then
response.write session(varetalID&"varenavn"):response.write "  " &  session(varetalID&"varestr") :response.write " " & session(VaretalID&"varefarve")& "<br>"
end if
next
Så ville "i" jo ikke skifte
i dette tilfælde skifter i fra 100100100101 til 100100100102 , jeg har altså 2 session navne 100100100101varenavn og 100100100102varenavn , dette kan jeg se ved udsift af "i" men værdien i 100100100101varenavn bliver den samme som i 100100100102varenavn , så et eller andet kikser ,
Har dog rettet det til det du skriver, men hjælper selfølgelig ikke da' det ikke er her problemet er

LN
Avatar billede softspot Forsker
13. april 2007 - 10:29 #3
OK, så det er altså denne linie du skal fokusere på:

vare = request("varetekst")

Det må jo betyde at ud skal undersøge hvordan din side bliver kaldt. Er det en querystring-parametere eller en form-post der kalder siden? Kan det evt. have noget med caching af siden at gøre? Prøv evt. at postfikse din url med et timestamp der sættes hver gang siden kaldes (for at omgå caching)...
Avatar billede softspot Forsker
13. april 2007 - 10:33 #4
Hov! Prøv lige at skrive varetalID ud inde i din løkke... skifter du rent faktisk session-variabel? Det ser ud til at du benytter varetalID i stedet for den tæller du itererer omkring, nemlig i...

for i =  cstr(id) & cstr(101) to cstr(id) & session("varetal")
  response.write session(varetalID&"varenavn")
  response.write "  " &  session(varetalID&"varestr")
  response.write " "
next
Avatar billede softspot Forsker
13. april 2007 - 10:38 #5
...det skal vel være:

for i =  cstr(id) & cstr(101) to cstr(id) & session("varetal")
  response.write session(i & "varenavn")
  response.write "  " &  session(i & "varestr")
  response.write " "
next
Avatar billede lordnelson Seniormester
13. april 2007 - 13:18 #6
Ja selvfølgelig hvor dum kan man være


Send lige et svar

LN
Avatar billede softspot Forsker
13. april 2007 - 13:24 #7
Kommer her :)
Avatar billede lordnelson Seniormester
13. april 2007 - 15:03 #8
Tak opretter et nyt emne vedr det samme
men en anden hørtel

LN
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