Avatar billede power_t Nybegynder
19. august 2005 - 12:29 Der er 2 kommentarer og
1 løsning

Betinget visning af nyheder

Jeg har en nyhedsdatabase i Access.
Nyhederne trækkes ud ved hjælp af id'et i db'en. De 3 nyeste nyheder vises på min forside.
Hvis en nyhed er læst, gemmes dette i en cookie.

Jeg vil gerne lave en betinget visning af mine nyheder, så en nyhed, der IKKE er læst, vises som link i fed skrift, mens en nyhed der er læst vises i normal skrift.

Når jeg trækker data ud fra cookien, får jeg en streng a la denne:

609=1&630=1&622=1&603=1&625=1&606=1&631=1&619=1&610=1&604=1&623=1&627=1

Hvor nyhedsid er det trecifrede tal, og tallet efter lighedstegnet er antallet af gange nyheden er læst.

Jeg kan simpelthen ikke få min side til at sammenligne det, der trækkes ud af cookien, men min nyhedsvisning - altså en sammenligning af id'er.

Har nogle et forslag til hvad jeg gør?
Avatar billede softspot Forsker
19. august 2005 - 12:48 #1
Hvad gør du nu? Det kunne være det du har lavet bare skulle rettes en lille smule for at fungere...

Jeg ville umiddelbart gøre flg.:

Splitte cookien op ved & og fjerne de nyheder som er læst (dem skal der jo ikke gøres noget specielt ved). Så ville jeg danne en kommasepareret streng med alle de id'er som ikke var læst som jeg kan søge i, når jeg itererer nyhederne fra databasen.

Noget i stil med dette (ingen database-kode i eksemplet):

' Opdel ident'er i et array
arrCookieData = Split(strCookieData, "&")

' Initier den streng der indeholde ikke læste ident'er
strNotRead = ","

' Gennemløb alle nyhedsident'er
for idx = 0 to ubound(arrCookieData)
  ' Opdel oplysninger om det enkelte ident
  arrNewsIdent = Split(arrCookieData(idx),"=")

  ' Hvis nyheden ikke er læst skal den ident tilføjes listen
  if arrNewsIdent(1) = "0" then
    strNotRead = strNotRead & arrNewsIdent(0) & ","
  end if
next

' Nu kan recordset med nyheder gennemløbes og nyheden kan udskrives...
do while not rs.eof
  ' Undersøg om aktuelle nyhedesident fra databasen findes i strengen
  ' af ident'er (omstillet af komma for at sikre at kun hele ident'er findes).
  if instr(strNotRead, "," & rs("NewsID") & ",") > 0 then
    ' så udskrives nyheden med fremhævet
  else
    ' ellers udskrives den normalt
  end if

  rs.movenext
loop

Er det helt misforstået eller kan det bruges?
Avatar billede power_t Nybegynder
19. august 2005 - 14:06 #2
Jeg kan godt følge dit eksempel, men da jeg ikke har id'erne på de nyheder, der ikke er læst i cookie strengen, kan jeg vist ikke bruge det til noget.
Jeg fandt fejlen i min kode - eller rettere sagt: manglen.
Det viste sig at de to variabler (hhv. den fra cookien og den fra db'en) ikke begge returnerede en numerisk værdi, så en omskrivning af variablerne var nok.
Avatar billede power_t Nybegynder
02. september 2005 - 09:38 #3
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester