Avatar billede psycho42 Nybegynder
14. august 2006 - 11:37 Der er 16 kommentarer og
2 løsninger

Finde værdi i array + fjerne værdi i array

(redefineret spørgsmål)
Hej Experter.

Jeg har et array indeholdende nogle værdier. (1,4,7) - Værdierne er unikke, og jeg ville gerne have, at man kunne finde værdien og få "true" ud, desuden kunne jeg også godt tænke mig at jeg kunne fjerne værdierne igen.

Jeg lagre arrayet i en session.

Mit problem er at jeg ikke kan gennemskue, hvordan man helt gør, når man henter værdierne fra et recordset. (altså i en do sætning)

indtil videre har jeg forsøgt mig med(finde værdier):

arrHold = Split(session("hold_kurv"),",")

fundet = 0
For i = LBound(arrHold) to UBound(arrHold)
if (arrHold(i)=rs2("id")) then
    fundet = 1
  end if
next
if fundet = 1 then...
else
...

fjerne værdier er jeg heller ikke helt sikker på :/

Håber der er en der kan hjælpe - Er tæt på en deadline og har set mig ret blind på det her :(

Med Venlig Hilsen
Brian L Nielsen
Avatar billede mitbrugernavn Praktikant
14. august 2006 - 11:50 #1
For i = LBound(arrHold) to UBound(arrHold)
if arrHold(i)=rs2("id") then
    session("hold_kurv") = replace(session("hold_kurv"),arrHold(i),"")
session("hold_kurv") = replace(session("hold_kurv"),",","")
  end if
next

er det det du mener
Avatar billede mitbrugernavn Praktikant
14. august 2006 - 11:50 #2
ups sådan

For i = LBound(arrHold) to UBound(arrHold)
if arrHold(i)=rs2("id") then
    session("hold_kurv") = replace(session("hold_kurv"),arrHold(i),"")
session("hold_kurv") = replace(session("hold_kurv"),",,",",")
  end if
next
Avatar billede psycho42 Nybegynder
14. august 2006 - 12:12 #3
ja det ser vidst rigtigt ud til at fjerne dem - Men kan se at når jeg så tilføjer en værdi igen efter jeg har fjerne den, så kommer den med fejl (skyldes det ikke at der opstår flere ",," ? - Vi fjerner et "," hvis der er to - men hvis man kun tilføjer en værdi, og så fjerne den igen, så står der et komma i sessionen.

arghh det må jeg selv lige ligge og rode med - :) - tak - men ..
- Hvad med, når jeg gerne vil søge efter en værdi og så få true ud - Som jeg skrev ovenfor havde jeg forsøgt mig, men det virker ikke -

Forresten tak fordi du er så hjælpsom - Du svare næsten altid på mine spørgsmål herinde :D
Avatar billede mitbrugernavn Praktikant
14. august 2006 - 12:20 #4
Det var så lidt (hjælpsomheden ;-))

if arrHold(i)=rs2("id") then
    session("hold_kurv") = replace(session("hold_kurv"),arrHold(i),"")
session("hold_kurv") = replace(session("hold_kurv"),",","")
response.write rs2("id")
  end if
next

finder lige en anden til at fjerne komma med
Avatar billede mitbrugernavn Praktikant
14. august 2006 - 12:25 #5
if arrHold(i)=rs2("id") then
    session("hold_kurv") = replace(session("hold_kurv"),arrHold(i),"")
session("hold_kurv") = trim(session("hold_kurv")) ' her fjernes evt. mellemrum start og slut
If left(session("hold_kurv"), 1) = "," Then ' her tjekkes om der er komma til sidst og fjerner det hvis
lokale_valg = right(session("hold_kurv"), len(session("hold_kurv"))-1)
End If
If right(session("hold_kurv"), 1) = "," Then ' her tjekkes om der er komma i start og fjerner det hvis
lokale_valg = left(session("hold_kurv"), len(session("hold_kurv"))-1)
End If

response.write rs2("id")
  end if
next
Avatar billede psycho42 Nybegynder
14. august 2006 - 12:29 #6
okay - tak - Ehm. "Lokale_valg" - hvad er det for en variable ? - skulle den ikke være arrHold ?
Avatar billede mitbrugernavn Praktikant
14. august 2006 - 12:32 #7
ups der var lige et par slå fejl i den forrige

if arrHold(i)=rs2("id") then
'her fjernes id hvis det forefindes
    session("hold_kurv") = replace(session("hold_kurv"),arrHold(i),"")
session("hold_kurv") = trim(session("hold_kurv")) ' her fjernes evt. mellemrum start og slut
If left(session("hold_kurv"), 1) = "," Then ' her tjekkes om der er komma til sidst og fjerner det hvis
session("hold_kurv")= right(session("hold_kurv"), len(session("hold_kurv"))-1)
End If
If right(session("hold_kurv"), 1) = "," Then ' her tjekkes om der er komma i start og fjerner det hvis
session("hold_kurv")= left(session("hold_kurv"), len(session("hold_kurv"))-1)
End If
session("hold_kurv") = replace(session("hold_kurv"),",,",",") ' så fjernes mellemliggende også
'her fjernes id hvis det forefindes
else
'her tilføjes id
session("hold_kurv") = session("hold_kurv") & ", " & rs2("id")
  end if
next
Avatar billede psycho42 Nybegynder
14. august 2006 - 12:36 #8
hehe okay - jeg fik også lige et par grå hår mere - og en masse fejl :D - jeg prøver lige
Avatar billede psycho42 Nybegynder
14. august 2006 - 12:46 #9
Hm. Jeg poster lige hvad sessionen indeholder, når jeg har eksekveret din kode(hvor id'et er "2":

sessionen indeholder (inden eksekvering):
2,8,9

efter eksekvering..
8,9, 2, 2

Lig mærke til der også er mellemrum :/ - heh - den tilføjer faktisk tallet igen.. plus to mellemrum
Avatar billede psycho42 Nybegynder
14. august 2006 - 12:50 #10
hm.. Tror at jeg fandt ud af det...

denne sætning skulle ikke med:
else
'her tilføjes id
session("hold_kurv") = session("hold_kurv") & ", " & rs2("id")
  end if
Avatar billede psycho42 Nybegynder
14. august 2006 - 12:54 #11
har du lyst til at hjælpe med den anden ting også - Jeg kan oprette endnu et spørgsmål med 200 point mere hvis du har tid og lyst?
Avatar billede mitbrugernavn Praktikant
14. august 2006 - 12:58 #12
det sidste var for at vise hvordan du tilføjede.

Opret bare et nyt spørgsmål - hvis det er angående noget andet - det er lidt bedre når man selv søger en løsning ;-))
Avatar billede psycho42 Nybegynder
14. august 2006 - 13:13 #13
hehe - det med at tilføje har jeg nu gjort =)- jeg kender bare ikke alle funktioner i ASP, derfor bruger jeg jer herinde også - samt wc3schools.org, html.dk, og et hav af bøger og lign.

Det andet er hvordan jeg finder f.eks. "2" inde i arrayet og så for returneret en variable's værdi - Jeg kan godt se jeg lyder doven. Men - årsagen til at jeg alligevel spørger er, at den metode som vi bruger her, jo er den vi også skal bruge i det andet tilfælde.. Men der er lige nogle ting som ikke helt stemmer over ens. Derfor jeg spørger :)

Som du kan se skrev jeg denne kode som jeg troede virkede:

if session("hold_kurv") = "" then
link til tilmelding (med et id ud fra et recordset)
else
fundet = 0
For i = LBound(arrHold) to UBound(arrHold)
if (arrHold(i)=rs2("id")) then
    fundet = 1
    end if
    next
if fundet = 1
then...
link til tilmelding
else
link til afmelding

Men det virker ikke, den udskriver hele tiden "tilmeld" som links - jeg har siddet med det hele weekenden, og bare fattet hat af det : D

Skal jeg oprette nyt "?" ?
Avatar billede mitbrugernavn Praktikant
14. august 2006 - 13:22 #14
'prøv at kør denne - lav først en hvor der er noget i session("hold_kurv") og derefter noget hvor den er tom
'tom session
session("hold_kurv") = ""
'ikke tom session
session("hold_kurv") = "2,3,4"
if session("hold_kurv") = "" then
response.write "<a href=""link_til_tilmelding.asp&id="&rs2("id")&""">tilmelding</a> "

else
For i = LBound(arrHold) to UBound(arrHold)
if (arrHold(i)=rs2("id")) then
response.write "<a href=""link_til_tilmelding.asp&id="&rs2("id")&""">tilmelding</a> "
else
response.write "<a href=""link_til_afmelding.asp&id="&rs2("id")&""">afmelding</a> "
    end if
    next
Avatar billede psycho42 Nybegynder
14. august 2006 - 13:39 #15
den har jeg prøvet - i stedet for at skrive afmeld, skriver den tilmeld i en ny række - du kan lige få adresse, er også lidt svært, når man ikke kan se hvad man snakker om
http://asp.ung-soroe.dk/hold.asp

holdet bliver tilmeldt, hvis du klikker på tilmeld - lige nu udskriver jeg bare sessionen, men ellers bliver holdets navn med link udskrevet øverst, når man har tilmeldt sig et hold ...

/Brian
Avatar billede mitbrugernavn Praktikant
14. august 2006 - 13:47 #16
if session("hold_kurv") = "" then
response.write "<a href=""link_til_tilmelding.asp&id="&rs2("id")&""">tilmelding</a> "

else
For i = LBound(arrHold) to UBound(arrHold)
if arrHold(i)=rs2("id") then  'prøv lige at retter her har fjernet ( )
response.write arrHold(i) & " " & rs2("id") ' og dette så vi kan se hvad den skriver
else
response.write "<a href=""link_til_afmelding.asp&id="&rs2("id")&""">afmelding</a> "
    end if
    next
Avatar billede psycho42 Nybegynder
14. august 2006 - 13:52 #17
aha - det er fordi den er i den der  do - while sætning. Id'et er 7 (sidste rs)
Avatar billede psycho42 Nybegynder
14. august 2006 - 13:56 #18
og dog.. - satte dem lige i <td> så de stod rigtigt.. - den udskriver stadig bare afmeld ud for dem alle :/

måske:
ICQ: 291-299-473
msn: psychoblabla@hotmail.com
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

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