@ndersMedlem sedan juni 200032 967 inläggTill 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
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?
@ndersMedlem sedan juni 200032 967 inläggTill 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.
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?
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.
@ndersMedlem sedan juni 200032 967 inläggIndentering 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
Åhå okej, då förstår jag @nders :)
Tack för förklaringen...
@ndersMedlem sedan juni 200032 967 inläggSå 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
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
:)
@ndersMedlem sedan juni 200032 967 inläggVad är Till för datatyp? Text? I så fall, varför då?
SQL = "SELECT * FROM meddelanden WHERE MID = " & lngMid & " AND Till='" & Session("userID") & "'"
Till är fältet i databasen.
Va! nä nu får vi ta om det här...vad menar du?
@ndersMedlem sedan juni 200032 967 inläggDu 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? :)
jag känner mig så dum, hoppas jag inte är till för mycket besvär...
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?
@ndersMedlem sedan juni 200032 967 inläggDu 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
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.
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!
@ndersMedlem sedan juni 200032 967 inläggOm 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