Avatar billede zuiq Nybegynder
02. august 2003 - 20:08 Der er 20 kommentarer og
1 løsning

Userlist og UserID

Yeah, dårlig titel men fuck det. Sidder og leger lidt med at lave et ORDENLIGT ASP-chat-script, og skal bruge lidt hjælp.

Når man går ind i et CHAT-rum bliver alle brugere i det rum gemt i en session (session("userlist")) (eller deres ID bliver gemt).

Når jeg så opdatere CHAT-rum-data fra serveren har jeg brug for at få lavet et script der laver en løkke der gør følgende:

-Hvis brugerens ID er gemt i session("userlist") så skal scriptet fx. skrive "*brugerens ID* ER i userlist"

-Og så hvis brugerens ID ikke er i sessionen skal den så fx. skrive "*brugerens ID* er IKKE i userlist"


Her er nogle 'test-værdier' i kan bruge:

session("userlist") = "1,2,3,4" (session("userlist") skal bare blive opdelt som et array)

strUserID = "2" (strUserID er så det ID skal der tjekkes om er i userlist :D)


Hvis i ikke forstår noget, så bed mig lige om at uddybe.

Mvh.
Mads
Avatar billede nmh Nybegynder
02. august 2003 - 20:12 #1
Dim A,s
Ulist=session("userlist")
A=split(Ulist,",")
nu er userlist gemt i et array A,
og det er let at gennemløbe det
Avatar billede nmh Nybegynder
02. august 2003 - 20:17 #2
Test af om bruger NNN er i listen.
måske kan dette bruges

dim i,NNN,fundet
for i=0 to Ubound(A)
  if NNN=A(i) then
    response.write(NNN & " er i listen")
    fundet=true
    exit for
  end if
next
if not fundet then
  response.write(NNN & " er ikke i listen")
end if
Avatar billede zuiq Nybegynder
02. august 2003 - 20:19 #3
DET der, kan jeg godt selv -tak :)
Og det er faktisk IKKE særlig let at gennemløbe det, hvordan ville du da gøre det?

Ja, man kan da lave en løkke, men hvis man så bruge Response.Write vil man jo skrive henholdsvis at brugerens id er der og ikke er der for hver 'post' i array'et :)

Eller har jeg bare fucket mit script op?

Kom med dit bud til hvordan jeg skal gøre det.

Mvh.
Mads
Avatar billede zuiq Nybegynder
02. august 2003 - 20:20 #4
Uhh, fed idé.. tak :D!

Tester lige, så får du dine points.
Avatar billede nmh Nybegynder
02. august 2003 - 20:22 #5
Forudsætningen for at det virker er at brugID er tekst.
Du kan evt erstatte NNN=A(i) med Cint(NNN)=Cint(A(i))
Avatar billede zuiq Nybegynder
02. august 2003 - 20:27 #6
Skal man ikke bytte om på "exit for" og "end if" her?:

dim i,NNN,fundet
for i=0 to Ubound(A)
  if NNN=A(i) then
    response.write(NNN & " er i listen")
    fundet=true
    exit for
  end if
next
Avatar billede nmh Nybegynder
02. august 2003 - 20:30 #7
nej, for når man har fundet brugeren, så skal man forlade for-løkken og ellers skal man forsætte i løkken.
Så du min bemærkning om Cint for at være sikker på man ikke sammnesligner et "tekst-tal" med et tal.
Avatar billede zuiq Nybegynder
02. august 2003 - 20:33 #8
Ja, så den godt, men det er unødvendigt fordi ID feltet i databasen er et INT-felt, og sessionen 'id' bliver kopieret fra databasen.

Så det er ville være spild af resurser at tjekke om det er et tal :)
Avatar billede nmh Nybegynder
02. august 2003 - 20:36 #9
Hvis du henter det i et recordset, vil det blive opfattet som tekst så vidt jeg husker.
Avatar billede zuiq Nybegynder
02. august 2003 - 20:39 #10
Virkelig? Ok :)
MANGE tak for hjælpen.
Avatar billede nmh Nybegynder
02. august 2003 - 20:41 #11
Det var så lidt. Jeg takker for point.
Kunne du så undvære 'Cint'?
Avatar billede squashguy Nybegynder
02. august 2003 - 20:50 #12
en variant:

id = "4"
str = "," & session("userlist") & ","
set regex = new RegExp
regex.pattern = "," &id& ","

if regex.test(str) then
    response.write "id findes"
else
    response.write "id findes ikke"
end if
Avatar billede zuiq Nybegynder
02. august 2003 - 20:56 #13
squashguy, hehe, forklar din kode..
fatter den OVERHOVEDET ikke :)!
Avatar billede nmh Nybegynder
02. august 2003 - 20:57 #14
-->squashguy: Noget i den stil tænkte jeg også på, men jeg ville have brugt InStr-funktionen på strengen "," & userlist & "," og på "," & ID & ",", men jeg forstod han helst ville have et array.
Avatar billede zuiq Nybegynder
02. august 2003 - 21:06 #15
nmh:
Din kode virker af en eller anden grund ikke.
har du selv testet den?.. Hvis ikke, kan du ikke lige gøre det, før jeg begynder at kigge hele min egen kode igennem for fejl :)
Avatar billede squashguy Nybegynder
02. august 2003 - 21:20 #16
nmh, InStr() ville nok i dette tilfælde være bedre. Jeg er bare ved at styrke mine færdighed i regulære udtryk, så jeg kan ikke tænke i andre baner :)

zuig, jeg bruger bare et regulært udtryk til at kontrollere om id er i strengen...
Avatar billede nmh Nybegynder
02. august 2003 - 21:45 #17
Jeg har lige testet dette som et VBscript-program, hvor jeg har erstattet response.write... med msgbox NNN & " er i listen"
og det virker fint. Men jeg bruger jo 'Cint'.

dim A,i,NNN,fundet,Liste
NNN="7" 'f.eks.
Liste="1,2,7,8,9,10"
A=split(Liste,",")
for i=0 to Ubound(A)
  if Cint(NNN)=Cint(A(i)) then
    response.write(NNN & " er i listen")
    fundet=true
    exit for
  end if
next
if not fundet then
  response.write(NNN & " er ikke i listen")
end if
Avatar billede nmh Nybegynder
02. august 2003 - 21:54 #18
Ovenstående kode virker fint. Hvis du hellere vil benytte InStr, så ser det således ud:
(Jeg har erstattet response.write med msgbox, så det kan testes som et VBscript)

dim i,NNN,Liste
Liste="1,2,7,8,9,10"
NNN="7"
if Instr("," & Liste & ",","," & NNN & ",")>0 then
  msgbox NNN & " er i listen"
else
  msgbox NNN & " er ikke i listen"
end if

Hvis du gemmer dette i en tekst-fil med navnet Liste.vbs, så er det et VBscript, som du kan få udført ved at klikke på filen.
Det virker som det skal (og det gør den forrige version også).
Hvad skete der, da du kørte det?
Avatar billede zuiq Nybegynder
02. august 2003 - 23:21 #19
Hey!
Fejlen er fundet, OG RETTET :)
Jeg var kommet til at ændre et lille i til et stort I, så lidt ka' gøre det.

Mange tak for hjælpen,
Mads
Avatar billede nmh Nybegynder
02. august 2003 - 23:24 #20
Ok. Kunne du undvære at benytte 'Cint'?
Avatar billede zuiq Nybegynder
03. august 2003 - 13:20 #21
Nå nej, den smed jeg også lige på :)

Mange tak for hjælpen,
Mads
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