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