webForumDet fria alternativet

Ifall jag var den senaste...

ASP

22 svar · 534 visningar · startad av DiDjo

Medlem sedan nov. 2002544 inlägg
Frågan#1

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
Medlem sedan nov. 2002544 inlägg
#2

Ingen Som vet?

Medlem sedan juli 20011 084 inlägg
#3

Många e väl upptagna så här på annandagen.

Lite svårt att veta? Är koden du posta ett eget försök? Vad innehåller variabeln gnamn och querystring("vem") ?

Om du har fast IP kan du ju kolla det med:

if(Request.ServerVariables("REMOTE_ADDR") <> [i]"143.2(ditt ip)[/i]") Then <koden här>
Medlem sedan mars 20023 561 inlägg
#4

Får se om jag har uppfattat frågan rätt...?

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

Korrekt uppfattat? :q

Medlem sedan nov. 2002544 inlägg
#5

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

Så blir det nu!

Medlem sedan juli 20011 084 inlägg
#6

Om du tar SELECT DISTINCT userID FROM lastvisit... Tar den bara ut ett av samma. Kanske kan funka?

Medlem sedan nov. 2002544 inlägg
#7

Men, ifall det blir så här då??

Användare 1
Användare 3
Användare 1
osv...

Medlem sedan jan. 20032 285 inlägg
#8
SELECT TOP 5 DISTINCT vem FROM tabell WHERE vemsida = '" & Request.QueryString("vem") & "' ORDER BY datum

Tycker jag nog borde funka. :)

Medlem sedan nov. 2002544 inlägg
#9

Vart det här felet då:

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
Medlem sedan jan. 20032 285 inlägg
#10

Vad händer om du byter plats på TOP 5 och DISTINCT då?

SELECT DISTINCT TOP 5 vem FROM tabell WHERE vemsida = '" & Request.QueryString("vem") & "' ORDER BY datum
Medlem sedan nov. 2002544 inlägg
#11

Då hände detta:

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
Medlem sedan jan. 20032 285 inlägg
#12

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)
Medlem sedan nov. 2002544 inlägg
#13

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

%>
Medlem sedan jan. 20032 285 inlägg
#14

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.

Medlem sedan nov. 2002544 inlägg
#15

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

Medlem sedan jan. 20032 285 inlägg
#16

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
Medlem sedan nov. 2002544 inlägg
#17

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??

Medlem sedan nov. 2002544 inlägg
#18

Så här gjorde jag:

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

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

%>

Då tog jag bort koden jag använde för att lägga in i databasen!

Men då säger den att rs3("datum") inte finns!

Medlem sedan jan. 20032 285 inlägg
#19
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
%>
Medlem sedan nov. 2002544 inlägg
#20

Tackar Tackar! :birp :moose

265 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)