Hej! Hur gör jag en kod som kollar om "jag" var den senaste på sidan? Den är till för att se vilka som va de 5 senaste besökarna! Men just nu blir jag alla 5 om jag går in på sidan 5 gånger! Hur gör jag en kod, som inte lägger till mig om jag var den senaste?
if request.querystring("vem") <> gnamn then
rs3.addnew
rs3("vemsida") = request.querystring("vem")
rs3("vem") = gnamn
rs3("datum") = now
rs3.update
rs3.close
end if
Du vill alltså att oavsett om det är samma person som har loggat in de 2 senaste gångerna ska det bara visas som en inloggning i listan, där du vill ha det 5 senaste personerna o inte de senaste inloggningarna...
Det är inte inloggning... Det är när man kommer in på någons profil, så ska sittt namn sparas i databasen! Koden jag postade är den kod jag använder för att spara användarens namn i en databas! Men om den användaren går in 3 gånger i t.ex. min profil, så sparas namnet 3 gånger!
T.ex.
Användare1 20:00
Användare1 19:57
Användare1 12:00
Användare2 Inte idag
Användare3 Inte idag
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'DISTINCT vem'.
/kommun/hem.asp, line 218
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC Microsoft Access Driver] ORDER BY clause (datum) conflicts with DISTINCT.
/kommun/hem.asp, line 218
Observera att jag inte är någon höjdare på SQL, men jag kan ju försöka. ;)
SELECT DISTINCT vem FROM tabell WHERE datum IN (SELECT TOP 5 datum FROM tabell WHERE vemsida = '" & Request.QueryString("vem") & "' ORDER BY datum DESC)
Nu säger den att den inte hittar rs3("datum"), vilket handlar om det här också...
ADODB.Recordset error '800a0cc1'
Item cannot be found in the collection corresponding to the requested name or ordinal.
/kommun/hem.asp, line 220
Här är hela loopen
<%
SQL1 = "SELECT DISTINCT vem FROM besokare WHERE datum IN (SELECT TOP 5 datum FROM besokare WHERE vemsida = '" & Request.QueryString("vem") & "' ORDER BY datum DESC)"
Set Rs3 = Connect2.Execute(SQL1)
Do Until Rs3.EOF
[b]if datediff("d",cdate(rs3("datum")),date()) = 0 then[/b]
if len(Hour(rs3("datum"))) = 1 then
intHour = "0"&Hour(rs3("datum"))
else
intHour = Hour(rs3("datum"))
end if
if len(Minute(rs3("datum"))) = 1 then
intMinute = "0"&Minute(rs3("datum"))
else
intMinute = Minute(rs3("datum"))
end if
strDatum = intHour & ":" & intMinute
else
strdatum = "Inte idag"
end if
Response.Write "<tr>"
Response.Write "<td width=50 align=left><font face=""Verdana, Arial, Helvetica, sans-serif"" size=""1""><b><a href=""hem.asp?vem="& Rs3("vem") & """>"& Rs3("vem") & "</a</b></td>"
Response.Write "<td width=60 align=center><font face=""Verdana, Arial, Helvetica, sans-serif"" size=""1"">" & strdatum & "</td>"
Response.Write "</tr>"
Rs3.MoveNext
Loop
%>
Jo, du måste hämta ut datumfältet också om du använder det i koden.
SQL1 = "SELECT DISTINCT vem, datum FROM besokare WHERE datum IN (SELECT TOP 5 datum FROM besokare WHERE vemsida = '" & Request.QueryString("vem") & "' ORDER BY datum DESC)"
Det kan dock vara så att den där SQL-satsen inte ger önskat resultat.
nepp... Det fungerar nu... men blev inte det resultatet jag ville ha... nu kommer jag inte med alls i listan... vet inte hur den loopar ut det nu! Går det inte att göra med en if-sats? Så att man inte kommer med i databasen alls, om man var den senaste på "min" sida?
typ
if gnamn = "den senaste posten på min sida" then
'inget händer
else
'hamnar i databasen
end if
Jo, du skulle väl kunna göra så här på profilsidan.
strSQL = "SELECT TOP 5 vem FROM tabell WHERE vemsida = '" & Request.QueryString("vem") & "' ORDER BY datum DESC"
Set objRS = objConn.Execute(strSQL)
blnJag = False
Do Until objRS.EOF
If objRS("vem") = gnamn Then blnJag = True
objRS.MoveNext
Loop
Set objRS = Nothing
If NOT blnJag Then
strSQL = "INSERT INTO tabell (vem, vemsida, datum) VALUES ('" & gnamn & "', '" & Request.QueryString("vem") & "', #" & Now() & "#)"
objConn.Execute(strSQL)
End If
hmmm nu vet jag inte riktigt vart den ska va :P....
Här är koden jag använder för att sätta in användaren i databasen:
if request.querystring("vem") <> gnamn then
rs3.addnew
rs3("vemsida") = request.querystring("vem")
rs3("vem") = gnamn
rs3("datum") = now
rs3.update
rs3.close
end if
Och här är loopen:
<%
SQL1 = "SELECT TOP 5 * FROM besokare WHERE vemsida = '" & Request.QueryString("vem") & "' ORDER BY datum DESC, vem"
Set Rs3 = Connect2.Execute(SQL1)
Do Until Rs3.EOF
if datediff("d",cdate(rs3("datum")),date()) = 0 then
if len(Hour(rs3("datum"))) = 1 then
intHour = "0"&Hour(rs3("datum"))
else
intHour = Hour(rs3("datum"))
end if
if len(Minute(rs3("datum"))) = 1 then
intMinute = "0"&Minute(rs3("datum"))
else
intMinute = Minute(rs3("datum"))
end if
strDatum = intHour & ":" & intMinute
else
strdatum = "Inte idag"
end if
Response.Write "<tr>"
Response.Write "<td width=50 align=left><font face=""Verdana, Arial, Helvetica, sans-serif"" size=""1""><b><a href=""hem.asp?vem="& Rs3("vem") & """>"& Rs3("vem") & "</a</b></td>"
Response.Write "<td width=60 align=center><font face=""Verdana, Arial, Helvetica, sans-serif"" size=""1"">" & strdatum & "</td>"
Response.Write "</tr>"
Rs3.MoveNext
Loop
%>
Vart ska den va? :e
Om jag fattade rätt, så ska den in vid loopen och min kod som jag har för att lägga in i databasen ska bort? Stämmer de??
SQL1 = "SELECT TOP 5 vem FROM besokare WHERE vemsida = '" & Request.QueryString("vem") & "' ORDER BY datum DESC, vem"
Set rs3 = connect2.Execute(SQL1)
blnJag = False
Do Until rs3.EOF
If rs3("vem") = gnamn Then blnJag = True
rs3.MoveNext
Loop
Set rs3 = Nothing
If NOT blnJag Then
strSQL = "INSERT INTO besokare (vem, vemsida, datum) VALUES ('" & gnamn & "', '" & Request.QueryString("vem") & "', #" & Now() & "#)"
connect2.Execute(strSQL)
End If
SQL1 = "SELECT TOP 5 * FROM besokare ORDER BY datum DESC"
Set Rs3 = Connect2.Execute(SQL1)
Do Until Rs3.EOF
if datediff("d",cdate(rs3("datum")),date()) = 0 then
if len(Hour(rs3("datum"))) = 1 then
intHour = "0"&Hour(rs3("datum"))
else
intHour = Hour(rs3("datum"))
end if
if len(Minute(rs3("datum"))) = 1 then
intMinute = "0"&Minute(rs3("datum"))
else
intMinute = Minute(rs3("datum"))
end if
strDatum = intHour & ":" & intMinute
else
strdatum = "Inte idag"
end if
Response.Write "<tr>"
Response.Write "<td width=50 align=left><font face=""Verdana, Arial, Helvetica, sans-serif"" size=""1""><b><a href=""hem.asp?vem="& Rs3("vem") & """>"& Rs3("vem") & "</a</b></td>"
Response.Write "<td width=60 align=center><font face=""Verdana, Arial, Helvetica, sans-serif"" size=""1"">" & strdatum & "</td>"
Response.Write "</tr>"
Rs3.MoveNext
Loop
%>