14. august 2006 - 11:37Der 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 :(
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
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
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
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
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
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
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
'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
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 ...
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
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.