09. juni 2011 - 15:28Der er
21 kommentarer og 1 løsning
Ønsker at se seneste tidspunkt en bruger har logget på hjemmesiden
Hej
Jeg har en hjemmeside hvor brugerne skal logge på med password og bruger ID. Det logger jeg i en database, men jeg vil gerne have det vist på en admin side på webben.
De oplysninger jeg har i databasen er:
Id UserID larst_login
Id= fortløbende nummer UserID = brugernavn larst_login = dato og klokkeslet
bruger A kan have logget på 5 gange i løbet af en dag, men den er den seneste tidsstempling jeg vil se samt bruger B kan have været logget på de sidste 3 dage, men her er det også den seneste tidsstempling fra databasen jeg vil se
jeg har prøvet flere forskellige ting, men tror det må være GROUP BY UserID der skal bruges på en eller anden måde!
tfswebguy >> hvis det foreslag jeg giver skal kunne bruges direkte, er jeg jo nød til at replikere den samme fejl som spørgeren, så det var skam med fuldt overlæg! Ellers godt forsøg - Jantelovsrytter! :D
SELECT TOP 1 tager kun den første række i udtrækket og returnerer den, så det er nok ikke vejen frem.
Når jeg skriver "AS larst_login", så er det for at navngive den kolonne i resultatet som MAX genererer, dvs. give kolonnen et alias. Hvis man ikke gør det, får kolonnen ikke et navn og kan derfor ikke refereres via navn.
Den metode jeg har illustreret burde efter min bedste overbevisning fungere, så jeg må lige have lidt mere info om konteksten...
Er der indhold i larst_login for brugerne i den tabel du gemmer loginhistorikken?
Hvilken database (sql server, access, mysql, andet) er der helt konkret tale om?
Hvad hedder tabellen med loginhistorikken helt konkret?
Det er en access database og tabellen hedder UserLog I tabellen er følgende kolonner: Navn: Id - Type: Autonummerering Navn: UserID - Type: Tekst Navn: Last_login - Type: Dato og klokkeslæt(Standarddatoformat) Navn: Number_login - Type: Tal
Der er pt. over 120 poster i tabellen og der er indhold i alle felterne.
Når jeg bruger "AS last_login" bliver siden ved med at loaded og der kommer ingen resultater frem, den står som en blank side, og man kan se at der loaded konstant. Hvis jeg ikke bruger "AS last_login" kommer kun de forskellige brugernavne frem.
PS: Larst er rettet allesteder til Last - beklager fejlen
Ingen årsag og ingen grund til at beklage en stavefejl - det er jo dit system, så du må kalde tinge hvad du måtte have lyst til :-)
Anyway! Jeg har lige testet om syntaksen fungerer i Access og det gør den, så der må være noget andet galt...
Kan du ikke lige prøve at vise den kode, hvor du rent faktisk udskriver data (dvs. efter du har udført kaldet til databsaen)?
Jeg har en mistanke om at du har glemt at kalde movenext på recordsettet, eller har lavet et eller andet der får koden til at gå i uendelig løkke (i modsætning til uendelig lykke, så er uendelig løkke typisk ikke optimalt!)...
Hermed hele asp koden, som så inkluderes ind på en anden side. eg har prøvet at gå direkte ind på siden, bare for at konstatere at det ikke er i "include" delen der sker fejl.
men jeg tror faktisk at det er noget med en uendelig løkke..
Du skal lige have fjernet den sidste parantes i din SQL-sætning (makeret med fed nedenfor):
sql = "SELECT UserID, MAX(last_login) AS Last_login FROM UserLog GROUP BY UserID)"
Prøv desuden at fjerne disse to linjer:
On Error Resume Next rs.MoveFirst
Den fejl der (givetvis) opstår, skjuler du ved at slå fejlmeddelelser fra, så det er i det mindste en god idé at deaktivere dem mens du udvikler og tester...
MoveFirst på et forward only resultat giver ikke nogen mening og bør derfor undlades. Connection.Execute returnerer, i den form du har benyttet den, et forward only resultat.
nu kommer følgende fejl: Microsoft OLE DB Provider for ODBC Drivers error '80004005' [Microsoft][ODBC Microsoft Access Driver] Circular reference caused by alias 'Last_login' in query definition's SELECT list. /administration-site/users-last.asp, line 10
------
dette er linjen der fejler: set RS = conn.execute( SQL )
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.