Du måste tänka på vilken typ av data du hanterar. Tal != Sträng.
IF Cint(RS("ThreadStatus")) = 0 THEN
status = 1
else
status = 0
end if
Iallafall misstänker jag att det är det som är felet.
9 svar · 267 visningar · startad av M.Cheraghi
Jag har ett konstigt fel med min IF sats i det området som är FETmarkerat! Grejjen är att jag håller på att bygga ett forum och då skall man kunna låsa trådar och i min databas har jag ett fält som heter ThreadStatus om det är satt till 0 så är det öppet och om det är satt till 1 så är det låst!
Så jag öppnar databasen och kollar befintliga värdet och sätter tvärt emot det värdet som redan finns! Men nått går fel och det går endast att låsa forum, och inte låsa upp dem! Jag får inget felmedelande, utan det flyter bara på :)
Jag har grupperat mina IF satser, och eftersom jag inte får felmedelande så kan jag inte bocka av kodstycken för att se vart som går fel! Kan @nders klaga på nått nu!? :e
<%
if session("admin") <> "true" OR session("moderator") <> "true" THEN
response.redirect "inside.asp?vad=forum"
else
if request.querystring("vad") = "las" THEN
ThreadID = request.querystring("ThreadID")
set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("databaser/forum.mdb")&";"
strSQL = "SELCT * tblThread WHERE ThreadID = "&ThreadID&""
SET RS = conn.execute(strSQL)
[b]IF RS("ThreadStatus") = "0" THEN
status = "1"
else
status = "0"
end if[/b]
strSQL = "UPDATE tblThread SET ThreadStatus = "&status&" WHERE ThreadID = "&ThreadID&""
conn.execute(strSQL)
end if
end if
%>
Du måste tänka på vilken typ av data du hanterar. Tal != Sträng.
IF Cint(RS("ThreadStatus")) = 0 THEN
status = 1
else
status = 0
end if
Iallafall misstänker jag att det är det som är felet.
Nej jag har kommit på vad felet är!
Jag skall teoretiskt sätt få fram en blank sida! (eftersom det inte finns nån HTML kod) Men jag kommer till startsidan, vilket är resultat utav min session koll högst upp sidan som är fel! men jag förstår inte vad av det som kan vara fel!
min gubbe jag är inloggad med är "admin" och sessionen är satt till "true" när jag skriver ut bara sessionen, men endå så bråkar min översta IF sats! Men eftersom jag inte har så vant öga kan jag inte se något fel!
Jag vill att uppdateringen skall köras ifall Admin = true, eller Moderator = true
Mvh
Är sessions-variablarna Boolean eller String?
OveRRidE skrev:
Är sessions-variablarna Boolean eller String?
:OO D där lät avancerat! Jag kan inget annat än skriva ut mina tillsättningar av sessioner!
If RS("sort") = "Administratör" then
session("admin") = "true"
end if
IF RS("sort") = "Moderator" then
session("moderator") = "true"
end if
En boolean är ett värde som anger True eller False. True eller False i sig översätts sedan till 0 för false eller vilket annat tal som helst för True, när det gäller heltal. Sträng vet du nog vad det är vid det här laget. Observera att det egentligen inte finns några datatyper i VBScript, bara Variants, en datatyp som kan innehålla lite vad som helst. Däremot är det viktigt att typkonvertera med t.ex. CLng(), Cint(), CStr() eller CBool().
Kort sagt; din kod ser ut att stämma.
RED. Men nu, Quake! :D
RED2. Sömn. Tack, SPiN. :)
OveRRidE skrev:
En boolean är ett värde som anger True eller False. True eller False i sig översätts sedan till 1 eller vilket annat tal som helst. Sträng vet du nog vad det är vid det här laget. Observera att det egentligen inte finns några datatyper i VBScript, bara Variants, en datatyp som kan innehålla lite vad som helst. Däremot är det viktigt att typkonvertera med t.ex. CLng(), Cint(), CStr() eller CBool().
Kort sagt; din kod ser ut att stämma.
Hookay!
Koden stämmer, men funktionen stämmer inte överens med teorin :) Coolt! Jag får spååna vidare på det hela :)
Tack för förklaringen :bire kul att lära sig nya saker :)
2 sekunder mellan tänkade och agerande!
Efter lite omkastande och omformulering av IF sats så gick det bra :)
Koden fungerar som den skall nu :)
Stort tack till dig OveRRidE :bire
<%
if session("admin") = "true" OR session("moderator") = "true" THEN
if request.querystring("vad") = "las" THEN
ThreadID = request.querystring("ThreadID")
set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("databaser/forum.mdb")&";"
strSQL = "SELECT * FROM tblThread WHERE ThreadID = "&ThreadID&""
SET RS = conn.execute(strSQL)
IF RS("ThreadStatus") = "0" THEN
status = "1"
else
status = "0"
end if
strSQL = "UPDATE tblThread SET ThreadStatus = "&status&" WHERE ThreadID = "&ThreadID&""
conn.execute(strSQL)
RS.close
Conn.close
SET RS = nothing
SET conn = nothing
end if
else
response.redirect "inside.asp?vad=forum"
end if
%>
Tänkte bara klargöra en grej;
OveRRidE skrev:
True eller False i sig översätts sedan till 1 eller vilket annat tal som helst.
Stämmer väl inte riktigt, eller så förstår jag dig fel. False representeras av 0, True representeras sedan av vilket annat värde som helst - när det gäller heltal. Övrig representation för False, om jag minns min basic rätt, är:
0.0 - Flyttal
"" eller "0" - Sträng
Vilka andra värden som helst representerar alltså True.
Det var heltal jag svamlade om, ja. Och ja, fråga mig inte hur jag lyckades vända på det där..