webForumDet fria alternativet

Konstigt fel med IF sats!

ASP

9 svar · 267 visningar · startad av M.Cheraghi

Medlem sedan juli 20015 107 inlägg
Frågan#1

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
%>
Medlem sedan feb. 200112 078 inlägg
#2

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.

Medlem sedan juli 20015 107 inlägg
#3

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

Medlem sedan feb. 200112 078 inlägg
#4

Är sessions-variablarna Boolean eller String?

Medlem sedan juli 20015 107 inlägg
#5

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
Medlem sedan feb. 200112 078 inlägg
#6

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. :)

Medlem sedan juli 20015 107 inlägg
#7

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 :)

Medlem sedan juli 20015 107 inlägg
#8

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
%>
Medlem sedan mars 20007 896 inlägg
#9

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.

Medlem sedan feb. 200112 078 inlägg
#10

Det var heltal jag svamlade om, ja. Och ja, fråga mig inte hur jag lyckades vända på det där..

281 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
151 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
151 ms — ändringar (db)