webForumDet fria alternativet

Funktionen hittar inte userID

ASP

15 svar · 391 visningar · startad av WebbisNet

Medlem sedan feb. 20032 027 inlägg
Frågan#1

Jag har en funktion som kollar om användaren är online eller inte

Function isOnline(userID)
Set onlinecheck=objConn.Execute("Select Tstamp From tblUsers WHERE userID=" & request("userID"))
If DateDiff("n", onlinecheck(0), Now) <= 1 Then
    isOnline = True
  Else
    isOnline = False
    response.redirect "/logout.asp"
  End If
End Function%>

och jag kallar på den med view.asp?userID=<%=isOnline(online("userID"))%>

Detta ger mig följande felmeddelande
Kompileringsfel i Microsoft VBScript (0x800A03EA)
Syntaxfel
/userlist.asp, line 15
Function isOnline(userID)

Nån som kan hitta felet?

Medlem sedan sep. 2002252 inlägg
#2

Vad är det för kod på rad 15?

Medlem sedan feb. 20032 027 inlägg
#3

Det som står i felmeddelandet

Medlem sedan sep. 2002252 inlägg
#4

Ja den raden ser ju onekligen korrekt ut, såvida det inte är så att du inte skickar med någon parameter.

Är det endast denna funktionen i filen eller det kan bero på kod som ligger innan funktionen?

Medlem sedan feb. 20032 027 inlägg
#5

koden funkar perfekt för onlinelistan, när jag lägger in funktionen får jag felet

Medlem sedan dec. 20003 887 inlägg
#6

Var lägger du in koden? Vad finns det något ovanför?

Medlem sedan sep. 2002252 inlägg
#7

Då är det alltså inte koden det är fel på utan det är något runt koden, svårt att säga något mer specifikt när man inte har alla filer etc... är även över ett år sedan jag jobbade med asp sist, nu är det bara php som gäller.

Medlem sedan mars 20015 287 inlägg
#8
Set onlinecheck=objConn.Execute("Select Tstamp From tblUsers WHERE userID=" & userID )

Eller?
Är det så du tänkt dig att använda dig av det userid som du stoppar in i funktionen?
Hur kallar du annars på funktionen?

/red. lite många citationstecken..

Medlem sedan feb. 20032 027 inlägg
#9

i onlinelistan så får jag ju med id-t för rätt användare, detta id vill jag använda i funktionen för att kolla om tiden är större eller mindre än den inställda och därefter sätta användaren som online eller offline

Medlem sedan mars 20015 287 inlägg
#10

online("userID"), vad ger det dig?

Medlem sedan feb. 20032 027 inlägg
#11

solbulle skrev:

online("userID"), vad ger det dig?

Det ger mig id för den/de användare som är markerade som online i databasen

Set online=objConn.Execute("Select TOP 7 * From tblUsers WHERE inloggad=True ORDER BY Tstamp desc")

de som inte är markerade som online har jag en annan sql sats för som ger rs offline("userID")

Medlem sedan mars 20015 287 inlägg
#12

Om du då får fram en kommaseparerad lista, kan du inte skriva din sql så här då:

Set onlinecheck=objConn.Execute("Select Tstamp From tblUsers WHERE userID IN =" & userID )
Medlem sedan feb. 20032 027 inlägg
#13

skriver ut hela onlinedelen istället:

<%
Set online=objConn.Execute("Select TOP 7 * From tblUsers WHERE inloggad=True ORDER BY Tstamp desc")
do until online.eof OR online.bof

if online("sex")="F" then
gender="Kvinna"
else
gender="Man"
end if

alder=FormatNumber(DateDiff("y",online("persnr") ,date())/365.2375,1)
Function isOnline(userID)
Set onlinecheck=objConn.Execute("Select Tstamp From tblUsers WHERE userID IN =" & userID )

If DateDiff("n", onlinecheck(0), Now) <= 1 Then
    isOnline = True
  Else
    isOnline = False
    response.redirect "/logout.asp"
  End If
End Function
%>
<tr>
<td width="15"  align="left"><%If online("Sex") = "M" Then%><%=maleIcon%></td>
<td width="55"  align="left"><a class="menu" href="/view.asp?userID=<%=isOnline(online("userID"))%>" title="<%=gender%> (<%=alder%>) från <%=online("city")%>" <%=linkmessage%>><%=online("username")%></a></td>
<td width="60"  align="right"><a <%=linkmessage%> href="/mail/writeMail.asp?sender=<%=Session("userID")%>&reciever=<%=online("userID")%>&toUser=<%=online("username")%>">
<img border="0" title="Skicka meddelande till <%=online("username")%>" <%=mail%>></a></td>

<td width="15"  align="left"><%ElseIf online("Sex")  = "F" Then%><%=femaleIcon%></td>
<td width="55"  align="left"><a class="menu" href="/view.asp?userID=<%=online("userID")%>" title="<%=gender%> (<%=alder%>) från <%=mainRS("city")%>" <%=linkmessage%>><%=online("username")%></a></td>
<td width="60"  align="right"><a <%=linkmessage%> href="/mail/writeMail.asp?sender=<%=Session("userID")%>&reciever=<%=online("userID")%>&toUser=<%=online("username")%>">
 <img border="0" title="Skicka meddelande till <%=online("username")%>" <%=mail%>></a></td>
<%End If%>
</tr>
<%online.MoveNext
Loop%>
Medlem sedan juni 200032 967 inlägg
#14

Du får inte lägga en funktion inne i en loop.

Medlem sedan dec. 20003 887 inlägg
#15

Som @nders säger får du inte ha en funktion i en loopen, så lägg dessa överst i koden.

Din funktion kommer dock att avbryta loopen om användaren inte är online och skicka besökaren till logout.asp. Det känns inte så genomtänkt även om det fallet inte kommer till att uppstå, eftersom du bara loopar igenom användare som är online. Det betyder i sin tur att du inte behöver göra kollen överhuvudtaget.

Din kod bör kunna skrivas om så här

<%
Set online = objConn.Execute("SELECT TOP 7 * FROM tblUsers WHERE inloggad ORDER BY Tstamp DESC")

Do Until online.EOF
  If online("sex")="F" Then
    gender="Kvinna"
  Else
    gender="Man"
  End If

  alder=FormatNumber(DateDiff("y", online("persnr"), Date())/365.2375,1)
%>
<tr>
<td width="15" align="left">
<%
  If online("Sex") = "M" Then
    Response.Write maleIcon
  ElseIf online("Sex") = "F" Then
    Response.Write femaleIcon
  Else
    Response.Write vbNullString
  End If
%>
</td>
<td width="55" align="left"><a class="menu" href="/view.asp?userID=<%=online("userID")%>" title="<%=gender%> (<%=alder%> ) från <%=online("city")%>" <%=linkmessage%>><%=online("username")%></a></td>
<td width="60" align="right"><a <%=linkmessage%> href="/mail/writeMail.asp?sender=<%=Session("userID")%>&reciever=<%=online("userID")%>&toUser=<%=online("username")%>">
<img border="0" title="Skicka meddelande till <%=online("username")%>" <%=mail%>></a></td>
</tr>
<%
  online.MoveNext
Loop
%>
Medlem sedan feb. 20032 027 inlägg
#16

ska bli kul att se hur det funkar :-)

254 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)