Jag vill lista dom 5 senaste inloggade personerna på min community men med den här koden tar den och listar alla om jag skriver datum istället för ID varför? Datumet inehåller det här formatet (2002-10-08 16:51:03) strSQL = "SELECT TOP 5 * FROM tblUsers ORDER BY Datum DESC" I första fallet. Testa med att även lägga in id i ORDER BY. Eftersom om Top går efter det fem första unika Datum. Läger du till Id efter datum. Så kan den skilja dem åt: Koden som lägger in tiden är Hej du lille mäniska. Sluta klaga. Om det inte fungerar kan du ju alltid lära dig programmera och lösa problemet själv.<br> Jag sparar tiden i den här koden Nu har jag löst allt. Tack för hjälpen. Kom på vad felet var när du sa det där om session och 6 timmar.Datum skit!!!
<%
strSQL = "SELECT TOP 5 * FROM tblUsers ORDER BY ID DESC" 'har ID nu men det ska vara datum
Set RS = Con.Execute(strSQL)
Do Until RS.EOF
Response.Write("" & "" & "" & " ")
RS.MoveNext
Loop
Set RS = Nothing
%>
Jag vill även räkna ut tiden mellan senaste inloggningen och tiden just nu. Men den visar en rad med massa konstiga siffror.
<%
Function diffTime(dTimeStart,dTimeEnd,sUnit)
Select case sUnit
case "min"
i = "n"
case "tim"
i = "h"
case "dag"
i = "d"
case else
i = "n"
End Select
diffTime = datediff(i,CDate(dTimeStart),CDate(dTimeEnd))
End Function
%>
(<%=DateDiff("n", RecSet("datum"), Now()) %>)Sv: Datum skit!!!
När det gäller tiden sedan senaste inloggning så borde du få det med den funktionen, presenterat i minuter.... Funktionen diffTime använder du inte alls...
/JohanSv: Datum skit!!!
<code>
<%
strSQL = "SELECT TOP 5 * FROM tblUsers ORDER BY Datum DESC, ID DESC"
Set RS = Con.Execute(strSQL)
Do Until RS.EOF
Response.Write "" & "" & "" & " "
RS.MoveNext
Loop
RS.Close
Set RS = Nothing
%>
</code>
I vilket format är värdet sparat i databasen? Vilken datatyp anväder du på fältet? Hur ser koden ut som sparar värdet?<br>
<br>
Du kan försöka med följnade kod:
<code>
<%
Function DeltaTime(Value)
Dim DateValue
Dim Dagar
Dim Timmar
Dim Minuter
If IsDate(Value) Or IsNumeric(Value) Then
DateValue = CDate(Value)
Dagar = DateDiff("d", DateValue, Now)
If Dagar Then
DeltaTime = Dagar & "dagar"
Else
Timmar = DateDiff("h", DateValue, Now)
Minuter = DateDiff("n", DateValue, Now)
If Timmar Then
DeltaTime = Timmar & "h " & Minuter Mod 60 & "min"
Else
DeltaTime = Minuter & "min"
End If
End If
Else
DeltaTime = "Inget giltligt datum"
End If
End Function
%>
(<%=DeltaTime(RecSet("datum"))%>)
</code>Sv: Datum skit!!!
Session("datum") = DateAdd("h",6,Now)
Och datum har text eller datum/tid
Med din kod står det 30 dagar
Den första koden som ska visa vilka som varit inne senast. visar i fel ordning. jag villatt dom ska radas upp efter årdningen som dom loggade in och inte IDSv: Datum skit!!!
<br>
Första SQL satsen hämtar det fem senaste posterna. Du kan presentera dem på olika sett. Enklast är nog att använda en sträng:
<code>
<%
Dim strResult
strSQL = "SELECT TOP 5 * FROM tblUsers ORDER BY Datum DESC, ID DESC"
Set RS = Con.Execute(strSQL)
Do Until RS.EOF
strResult = "" & "" & "" & " " & strResult
RS.MoveNext
Loop
Response.Write strResult
RS.Close
Set RS = Nothing
%>
</code>
datum fältet skall vara datum/tid inte Text. Om den är text ändra den då till datum/tid. Om det står 30 dagar är det 30 dagar mellan datumet och dagens datum. Inget konstigt med de. Kan bero på att du inte sparar den till databasen utan har den i sessions variabeln.<br>
<br>
Väntar fortfarande på koden som skriver till databasen och när den körs.Sv: Datum skit!!!
SQL = "UPDATE tblUsers Set poang = poang +1, Status = 'online', datum = DateAdd('h',6,Now) where ID = " & rst("ID")
Connect.Execute(SQL)
Fixade den lite så nu funkar allt utom tids skriptet som ska räkna ut hur länge man har varit online.Sv: Datum skit!!!