webForumDet fria alternativet

Loopa igenom cookies?

ASP

4 svar · 312 visningar · startad av jimpa

Medlem sedan jan. 2001361 inlägg
Frågan#1

Hej,
Denna koden använder jag för att spara en cookie som innhåller datum/tid när senaste posten i en tråd/forum är läst.

Response.Cookies("" & ForumID & "")("" & Request("ThreadID") & "") = lastPostDate
Response.cookies("" & ForumID & "").Expires = DateAdd("d",10,Now())

Vid trådlistningen jämför jag cookie´n med trådens senast inlagda post för att kontrollera om en ny post har tillkommit sen

     If cDate(objRS("pLastDate")) > cDate(Request.Cookies("" & Request("ForumID") & "")("" & objRS("PostID") & "")) Then
    Response.write "Ny post!"
    Else
    Response.write "Ingen ny post!"
    End If

Nu till min fråga!
Hur kan jag på ett smidigt sätt "Markera detta forum som läst"?
Kan jag på något sätt spara om alla cookies med ett visst "ForumID" med ett nytt datum "Now()"?

Mvh Jimpa

Medlem sedan feb. 200112 078 inlägg
#2

Kolla lite här;

   For Each strKey In Request.Cookies
      Response.Write strKey & " = " & Request.Cookies(strKey) & "<BR>"
      If Request.Cookies(strKey).HasKeys Then
        For Each strSubKey In Request.Cookies(strKey)
          Response.Write "->" & strKey & "(" & strSubKey & ") = " & _
            Request.Cookies(strKey)(strSubKey) & "<BR>"
        Next
      End If
    Next

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/iis/ref_vbom_seropsct.asp

Det är ju lite dumt eftersom du inte har någon direkt identifierare för exakt vilken data cookien innehåller. Jag hade nog döpt dem till t.ex.

"Forum" & lForumId

eller

"Thread" & lThreadId
Medlem sedan feb. 200112 078 inlägg
#3

Du kan ju visserligen göra såhär:

set rs = GetAllForum() '#populera ditt recordset med forum

while not rs.eof 
   if request.cookies(rs("ForumId")).HasKeys then
      response.cookies(rs("ForumId"))(Request("ThreadID")) = now()
   end if
   rs.movenext
wend

set rs = nothing

/red. Din variabel lastPostDate är lite förvirrande. Innehåller den datumet då tråden senast lästes? Det låter som nör den senast blev postad i. En tanke bara, så jag inte tänker fel själv. :)

Medlem sedan jan. 2001361 inlägg
#4

Tack!
Koden för att uppdatera cooki´sar ser nu ut så här

      If Request.Cookies(Request("ForumID")).HasKeys Then
        For Each strSubKey In Request.Cookies(Request("ForumID"))
          Response.Cookies(Request("ForumID"))(strSubKey) = Now()
        Next
       Response.Cookies(Request("ForumID")).Expires = DateAdd("d",20,Now())
      End If

Problemet nu är nu att dom trådarna som ej är besökta inte har någon cookie, vilket innebär att dom kommer att listas som nya i vilket fall!

Det gåt ju att lösa genom att när man väljer att "markerar ett forum som läst" loopar igenom alla trådar och skapar en cookie med värdet "now()"

Tycker det borde gå att lösa på ett smidigare sätt?

Eller kanske ska man istället när man vill "Markera forumet som läst" skapa en ny cookie typ: Response.Cookies(Request("ForumID"))("marked_read") = Now() och jämföra mot den i första hand när man listar trådarna i forumet?

Snurrit värre detta :P

Föslag någon?

/red. Din variabel lastPostDate är lite förvirrande. Innehåller den datumet då tråden senast lästes? Det låter som nör den senast blev postad i. En tanke bara, så jag inte tänker fel själv.

lastPostDate innehåller datumet då trådens senaste post skapades.

Medlem sedan jan. 2001361 inlägg
#5

:)
För den som är intressad så löste jag det så här:
På sidan som listar alla forum inlägg

    Dim checkdate : checkdate = ""
    Dim strNew : strNew = true
    
    checkdate = Request.Cookies(Request("ForumID"))(objRS("PostID"))
    If Len(checkdate) <> 0 Then
    if cDate(objRS("pLastDate")) =< cDate(checkdate) Then strNew = false
    End If
    
    checkdate = Request.Cookies("Marked" & Request("ForumID"))("MarkedRead") 
    If Len(checkdate) <> 0 Then
    if cDate(objRS("pLastDate")) =< cDate(checkdate) Then strNew = false
	End If
    
    If strNew = true then
    	Response.write "<img alt=""Contains new post since last visit!"" title=""Contains new post(s) since last visit!"" border=""0"" src=""icon/icon_folder_2.gif"">"
	Else
        Response.write "<img alt=""Does not contains new post since last visit!"" title=""Does not contains new post since last visit!"" border=""0"" src=""icon/icon_folder.gif"">"
    End If

På sidan som visar en tråd

Response.Cookies(ForumID)(Request("ThreadID")) = lastPostDate
Response.cookies(ForumID).Expires = DateAdd("d",200,Now())

På sidan som markerar ett forum som läst

       Response.Cookies(Request("ForumID")) = ""      
       Response.Cookies(Request("ForumID")).Expires = DateAdd("d",-1,Now())

       Response.Cookies("Marked" & Request("ForumID"))("MarkedRead") = Now()
       Response.Cookies("Marked" & Request("ForumID")).Expires = DateAdd("d",200,Now())

      Response.Write "This Forum is now marked as read!"
280 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
142 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)