webForumDet fria alternativet

Jäfmröa Session med recordset.

ASP

43 svar · 679 visningar · startad av magnusfernstrom · sida 2 av 3

Frågan, av magnusfernstrom

Hej hej! Jag vill jämföra en Session med ett recordset för att kolla om användarens Id är lika med det ID som meddelandent är till. Annars ska man redirectas till meddelande sidan. Jag får det inte att fungera med den här koden: If Session("userID") = rs("To") Then 'koden som skriver ut meddelanden Jag får inget felmeddelande, men ingen data dyker helt enkelt upp på sidan. Jag kanske f

Läs frågan i sin helhet →
Medlem sedan juni 200032 967 inlägg
#21

Till att börja med: indentera din kod, så blir det hela mycket mindre stökigt, och mer lättöverskådligt.

If det ena then
      Gör något
      If något annat then
              Gör något
      Else
              Gör något helt annat
              If något tredje then
                     Gör något
              Else
                     Gör något ännu annare
              End if
      End if
End if
Medlem sedan mars 20033 686 inlägg
#22

Oookej, men hur skall man få in denna kod på rätt sätt: If objRS.EOF Then. Och hur ska den se ut tillsammans med min kod?

Medlem sedan juni 200032 967 inlägg
#23

Till att börja med: indentera din kod så det går att titta på den utan att hjärnan imploderar.

Sedan är det inte mycket fix för att få det att funka.

Medlem sedan mars 20033 686 inlägg
#24

Hehe men det blir antagligen ännu stökigare när jag har identerat min kod...

Jag vette tusan hur man ska identera sin kod för att få den snygg...som sagt kommer bara att bli fult.

Så utan det kan du inte hjälpa mig?

Medlem sedan mars 20033 686 inlägg
#25

Känner mig väldigt jobbig just nu...
Hoppas du inte surnar till @nders...
Men tyvärr, jag fattar helt enkelt inte.
Jag tycker ASP är jätte svårt.

Medlem sedan juni 200032 967 inlägg
#26

Indentering innebär helt enkelt att du strukturerar koden så det går att se vad som hör ihop. Innehållet i en if-sats eller liknande, ett steg in. Har du if-satser i if-satser, ett steg längre in. Jag har indenterat din kod:

<%
If Session("inloggad") = "ja" Then
	If Request.Querystring("MID") = "" Then
		Response.Write "Meddelanden finns inte"
	Else
		Set db = Server.CreateObject("ADODB.Connection")
		db.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("users.mdb")
		SQL = "SELECT * FROM meddelanden WHERE MID = " & Request.Querystring("MID") & ""
		Set rs = db.Execute(SQL)

		If IsNumeric(Session("userID")) Then
			If CLng(Session("userID")) = CLng(rs("Till")) Then
 				Do until rs.EOF %>
					<br>
					Rubrik: <%=rs("Rubrik")%>
					<br>
					Från: <%=rs("FranUser")%>
					<br>
					<br>
					<%=rs("Meddelande")%>
					<br><%
					rs.MoveNext
				Loop
			Else
				Response.Redirect "meddelanden.asp"
			End If
		End If
	End If
End If
%>

Säg mig, är det lite lättare att se vad som hör till vilken if-sats?

Jag återkommer inom kort med lite kod som (förhoppningsvis) löser aktuellt problem.

Mvh

Medlem sedan mars 20033 686 inlägg
#27

Åhå okej, då förstår jag @nders :)
Tack för förklaringen...

Medlem sedan juni 200032 967 inlägg
#28

Så här hade jag gjort:

<%
If Session("inloggad") = "ja" Then ' Denna if-sats hade jag bytt till [i]if session("userid") <>"" then[/i]
	strMid = Request.Querystring("MID")
	if strMid = "" then 
		lngMid = -1 ' vilket värde som helst som inte ger träff i tabellen [i]meddelanden[/i]
	else
		if isnumeric(strMid) then
			lngMid = clng(strMid) ' denna subtypskonvertering behövs egentligen inte, men vi gör den bara för att. :-)
		else
			lngMid = -1 ' MID-värdet som kastas hit är inte numeriskt, så, enligt ovan alltså.
		end if
	end if

	Set db = Server.CreateObject("ADODB.Connection")
	db.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("users.mdb")
	SQL = "SELECT * FROM meddelanden WHERE MID = " & lngMid & " AND Till=" & Session("userID")
	Set rs = db.Execute(SQL)

	if rs.eof then
		Response.write "Hä va ju inge!"
	else
		Do until rs.EOF 
			Response.write "<br>Rubrik: " & rs("Rubrik")
			Response.write "<br>Från: " & rs("FranUser")
			Response.write "<br><br>" & rs("Meddelande") & "<br>"
			rs.MoveNext
		Loop
	End If
End If
%>

Angående val av connectionstring, läs här och ett par inlägg längre ner.

Jag har tagit bort din response.redirect, för jag förstod inte under vilka förutsättningar den skulle köras. Berätta gärna vad du hade planerat.

Mvh

Medlem sedan mars 20033 686 inlägg
#29

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

/slauson/db/1/message.asp, line 17

:)

Medlem sedan juni 200032 967 inlägg
#30

Vad är Till för datatyp? Text? I så fall, varför då?

	SQL = "SELECT * FROM meddelanden WHERE MID = " & lngMid & " AND Till='" & Session("userID") & "'"
Medlem sedan mars 20033 686 inlägg
#31

Till är fältet i databasen.

Medlem sedan juni 200032 967 inlägg
#32

Ja ?!??!? ? :o :q

Medlem sedan mars 20033 686 inlägg
#33

Va! nä nu får vi ta om det här...vad menar du?

Medlem sedan juni 200032 967 inlägg
#34

Du har ett fält som heter Till i din tabell.
Vilken datatyp är fältet Till som ligger i din tabell?
Är fältet Till som ligger i din tabell av datatypen text?
I så fall: Varför är fältet Till som ligger i din tabell av datatypen text?

Är mina frågor tillräckligt klara? :)

Medlem sedan mars 20033 686 inlägg
#35

jag känner mig så dum, hoppas jag inte är till för mycket besvär...

Medlem sedan mars 20033 686 inlägg
#36

Jaaaaaaså....haha sorry @nders....
Ja den är text, och en varför jag har det vet jag inte.
Jag bara är sån :P ska jag byta till tal?

Medlem sedan juni 200032 967 inlägg
#37

Du lagrar väl tal (användar-id:n) i fältet? I så fall bör det ju helt klart vara av typen tal.

mvh

Medlem sedan mars 20033 686 inlägg
#38

Haha okej, du förstår saker som dessa är inte självklara för mig ;) :) även om jag hade kunnat tänka ut det.

Medlem sedan mars 20033 686 inlägg
#39

Hurra hurra.
Nu när jag ändrade lite i databasen så blev det tydligen fel nånstans...

När jag skall till inboxen för mina meddelanden så får jag detta meddelande:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

/slauson/db/1/meddelanden.asp, line 7

med denna kod

<%
If Session("inloggad") = "ja" Then

Set db = Server.CreateObject("ADODB.Connection")
db.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("users.mdb")
SQL = "SELECT * FROM meddelanden WHERE Till = '" & Session("userID") & "'"
Set rs = db.Execute(SQL)

Do until rs.EOF
%>
<table border="0" cellpadding="1" cellspacing="1">
<td width="300" height="" valign="center" align="left" bgcolor="EEEEEE">
<a href="message.asp?MID=<%=rs("MID")%>"><%=rs("Rubrik")%></a>
</td>
<td width="200" height="" valign="center" align="left" bgcolor="EEEEEE">
<a href="users.asp?userID=<%=rs("Fran")%>"><%=rs("FranUser")%></a>
</td>
<td width="100" height="" valign="center" align="left" bgcolor="EEEEEE">
<a href="delete_message.asp?MID=<%=rs("MID")%>">ta bort</a>
</td>
<%
rs.MoveNext
Loop
Set rs = nothing

End If
%>

OBSERVERA!
Detta är alltså inte sidan där man ser själva meddelandet!

Medlem sedan juni 200032 967 inlägg
#40

Om du har gjort Till till ett fält av typen tal så får du inte ha apostrofer runt fältvärdet i SQL-frågor.

Mvh

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